From: | Bartosz Dmytrak <bdmytrak(at)gmail(dot)com> |
---|---|
To: | Guillaume Henriot <henriotg(at)gmail(dot)com> |
Cc: | pgsql-novice(at)postgresql(dot)org |
Subject: | Re: Returning generated id after a transaction. |
Date: | 2012-04-24 18:46:52 |
Message-ID: | CAD8_UcY1nN=O-j9NMq1nJhFDAG5Bo6BHAUTRLig4K7LYTwWZdw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-novice |
2012/4/23 Guillaume Henriot <henriotg(at)gmail(dot)com>
> Just one quick question again about my first problem, is that a limitation
> that code between begin and commit can't send back the id, or was it just a
> problem about my code ?
>
I think there is a bug in Your code:
BEGIN;
INSERT INTO table1 (id, name) VALUES (DEFAULT, 'name_of_the_entry');
UPDATE table2 SET table1_id = CURRVAL('table1_id_seq') WHERE id =
'some_row_id';
SELECT CURRVAL('parts_id_seq') AS table1_id;
COMMIT;
I looks like You are trying to select current value of other sequence. You
are trying to use table1_id_seq for update and parts_id_seq for select.
I tried similar code:
BEGIN;
INSERT INTO "tblParent" ("RowValue") VALUES ('2012-01-02'::date);
UPDATE "tblChild"
SET "ParentRowId" = currval('"tblParent_RowId_seq"'::regclass)
WHERE "RowId" = 1923;
SELECT currval('"tblParent_RowId_seq"'::regclass);
COMMIT;
works for me, but select doesn't produce any output in pgAdmin, only a
message:
*Query result with 1 row discarded. - *is that Your exception?
*Query returned successfully with no result in 26 ms. *
AFAIK pgAdmin runs all statements in SQL window in one transaction, so
there is no need to put everything in BEGIN...COMMIT
I have tried this code line by line i psql and works fine too:
myDatabase=# BEGIN;
BEGIN
myDatabase=# INSERT INTO "tblParent" ("RowValue") VALUES
('2012-01-02'::date);
INSERT 0 1
myDatabase=# UPDATE "tblChild"
SET "ParentRowId" = currval('"tblParent_RowId_seq"'::regclass)
WHERE "RowId" = 1923;
UPDATE 1
myDatabase=# SELECT currval('"tblParent_RowId_seq"'::regclass);
currval
---------
118
(1 row)
myDatabase=# COMMIT;
COMMIT
Regards,
Bartek
From | Date | Subject | |
---|---|---|---|
Next Message | Willy-Bas Loos | 2012-04-25 11:30:18 | Re: Using Table Indexes After Joins |
Previous Message | Jim Blizard | 2012-04-23 17:46:37 | Re: logging pg_dump results in windows 7 |