我想在 Postgres 数据库上的原子事务中运行大量语句。BEGIN;
放在脚本的开头和COMMIT;
结尾是否足够?我想确保如果在事务期间发生错误,它会自动回滚。
例如,我有脚本 test.sql:
BEGIN;
SELECT
*
FROM
intentional_error;
CREATE TABLE faketable (fakecolumn TIMESTAMP);
COMMIT;
intentional_error
不是我的架构中的真实表,因此我预计事务中的第一个语句会出错。当它出错时,我想知道是否faketable
会被创建。
根据我的研究,我找不到明确说明 aROLLBACK;
在这种情况下是自动的 Postgres 文档。有一个Stack Exchange 答案指出这ROLLBACK;
是自动的,但我很想看到 Postgres 文档中的测试或其他内容。