Re: Questions about Rollback - after insert, update, delete ... operations?
От | Tom Lane |
---|---|
Тема | Re: Questions about Rollback - after insert, update, delete ... operations? |
Дата | |
Msg-id | 3300.1127483587@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: Questions about Rollback - after insert, update, delete ... operations? (Bruno Wolff III <bruno@wolff.to>) |
Список | pgsql-general |
Bruno Wolff III <bruno@wolff.to> writes: >> I wasn't able to find where this is spelled out in the documentation, >> but I believe all DDL commands except DROP DATABASE can be rolled back now. > I don't think there's any all-in-one-place statement about it, but > anything that doesn't explicitly object to being put inside a > transaction block can be rolled back. Grepping for > PreventTransactionChain, I see that the current suspects are > CLUSTER (only the multi-table variants) > CREATE DATABASE > DROP DATABASE > REINDEX DATABASE > CREATE TABLESPACE > DROP TABLESPACE > VACUUM As of 8.1, REINDEX SYSTEM needs to be listed as well. In this context, it may be worth pointing out that CLUSTER, VACUUM, and REINDEX are all *internally* roll-back-able, as is essential for crash safety. The reason they object to being inside a transaction block is that they want to start and end their own transactions internally so that they can process each table in a separate transaction. So, CREATE/DROP DATABASE and CREATE/DROP TABLESPACE really are the only operations Postgres cannot roll back. regards, tom lane
В списке pgsql-general по дате отправления: