| From: | Sean Davis <sdavis2(at)mail(dot)nih(dot)gov> |
|---|---|
| To: | Greg Sabino Mullane <greg(at)turnstep(dot)com> |
| Cc: | pgsql-novice(at)postgresql(dot)org |
| Subject: | Re: Using nextval(seq) in more than one column |
| Date: | 2007-10-10 16:06:54 |
| Message-ID: | 470CF89E.1080201@mail.nih.gov |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-novice |
Greg Sabino Mullane wrote:
>
> -- A few ideas:
>
> CREATE DATABASE sean;
>
> \c sean
>
> BEGIN;
>
> SET client_min_messages = 'error';
>
> CREATE SEQUENCE asdf1_seq;
> CREATE TABLE asdf1 (
> id INT NOT NULL PRIMARY KEY DEFAULT nextval('asdf1_seq'),
> foo TEXT
> );
>
> CREATE VIEW asdf AS SELECT *, 'ASDF-'||id AS asdf FROM asdf1;
>
> INSERT INTO asdf1(foo) VALUES ('a view');
>
> SELECT * FROM asdf;
>
> CREATE SEQUENCE asdf2_seq;
>
> CREATE TABLE asdf2 (
> id INT NOT NULL PRIMARY KEY DEFAULT nextval('asdf2_seq'),
> asdf TEXT,
> foo TEXT
> );
>
> CREATE FUNCTION update_asdf()
> RETURNS TRIGGER
> LANGUAGE plpgsql
> AS $_$ BEGIN NEW.asdf = 'ASDF-'||NEW.id; RETURN NEW; END $_$;
>
> CREATE TRIGGER asdf_trigger BEFORE INSERT OR UPDATE ON asdf2
> FOR EACH ROW EXECUTE PROCEDURE update_asdf();
>
> INSERT INTO asdf2(foo) VALUES ('a trigger');
>
> SELECT * FROM asdf2;
>
>
> CREATE SEQUENCE asdf3_seq;
>
> CREATE TABLE asdf3 (
> id INT NOT NULL PRIMARY KEY DEFAULT nextval('asdf3_seq'),
> asdf TEXT NOT NULL DEFAULT 'ASDF-' || currval('asdf3_seq'),
> foo TEXT
> );
>
> INSERT INTO asdf3(foo) VALUES ('currval hack');
>
> SELECT * FROM asdf3;
>
> CREATE SEQUENCE asdf4_seq;
>
> CREATE TABLE asdf4 (
> id INT NOT NULL PRIMARY KEY DEFAULT nextval('asdf4_seq'),
> asdf TEXT,
> foo TEXT
> );
>
> CREATE RULE asdf_rule AS ON INSERT TO asdf4
> DO ALSO UPDATE asdf4 SET asdf='ASDF-'||id
> WHERE id=currval('asdf4_seq');
>
> INSERT INTO asdf4(foo) VALUES ('a rule');
>
> SELECT * FROM asdf4;
>
> ROLLBACK;
>
Thanks, Greg. These are great and answer my question in much more
detail than I had hoped.
Sean
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Brian Oki (boki) | 2007-10-10 23:12:32 | support for distributed transactions |
| Previous Message | Greg Sabino Mullane | 2007-10-10 16:01:47 | Re: Using nextval(seq) in more than one column |