Re: A transaction in transaction? Possible?
От | Achilleus Mantzios |
---|---|
Тема | Re: A transaction in transaction? Possible? |
Дата | |
Msg-id | Pine.LNX.4.44.0411101256590.6883-100000@matrix.gatewaynet.com обсуждение исходный текст |
Ответ на | Re: A transaction in transaction? Possible? (Michael Fuhr <mike@fuhr.org>) |
Ответы |
Re: A transaction in transaction? Possible?
Re: A transaction in transaction? Possible? Re: A transaction in transaction? Possible? |
Список | pgsql-sql |
O Michael Fuhr έγραψε στις Nov 10, 2004 : > On Wed, Nov 10, 2004 at 12:45:19AM -0800, Riccardo G. Facchini wrote: > > > Sorry, but I understand that your example is not really about nested > > transactions, but about sequential transactions. > > Here's a more elaborate example. If this doesn't demonstrate the > capability you're looking for, then please provide an example of > what you'd like to do and describe the desired behavior. > > CREATE TABLE person (id SERIAL PRIMARY KEY, name TEXT NOT NULL); > > BEGIN; > INSERT INTO person (name) VALUES ('Alice'); > > SAVEPOINT s1; > INSERT INTO person (name) VALUES ('Bob'); > > SAVEPOINT s2; > INSERT INTO person (name) VALUES ('Charles'); > > SAVEPOINT s3; > INSERT INTO person (name) VALUES ('David'); > ROLLBACK TO s3; > > INSERT INTO person (name) VALUES ('Edward'); > ROLLBACK TO s2; > > INSERT INTO person (name) VALUES ('Frank'); > RELEASE s1; > > INSERT INTO person (name) VALUES ('George'); > COMMIT; Just a very naive thought.... Wouldn't make more sense to allow nested begin/commit/rollback blocks? > > SELECT * FROM person; > id | name > ----+-------- > 1 | Alice > 2 | Bob > 6 | Frank > 7 | George > > If you change "ROLLBACK TO s2" to "RELEASE s2" then you get this: > > id | name > ----+--------- > 1 | Alice > 2 | Bob > 3 | Charles > 5 | Edward > 6 | Frank > 7 | George > > If you change "RELEASE s1" to "ROLLBACK TO s1" then you get this: > > id | name > ----+-------- > 1 | Alice > 7 | George > > -- -Achilleus
В списке pgsql-sql по дате отправления: