我正在数据库上编写一个触发器 INSTEAD OF INSERT ON 一个表,它进行了一些操作,然后将数据插入到不同的相关表中。现在我需要禁用自动提交并在触发器内设置不同的隔离级别,我该怎么办?
问问题
8832 次
2 回答
8
除了嵌入式 SQL,PostgreSQL 没有禁用自动提交的设置。如果您尝试在 PSQL 中设置自动提交关闭,您将看到类似此错误的内容。
sandbox=# set autocommit=off;
ERROR: SET AUTOCOMMIT TO OFF is no longer supported
相反,使用 BEGIN 启动事务。在 PostgreSQL 中,您可以在单个语句中启动事务并设置隔离级别。(其他平台需要多个语句。) PostgreSQL 9.2 的骨架语法是
BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]
where transaction_mode is one of:
ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ |
READ COMMITTED | READ UNCOMMITTED }
READ WRITE | READ ONLY
[ NOT ] DEFERRABLE
使用 COMMIT 或 ROLLBACK 结束事务。
于 2013-07-30T01:38:44.383 回答
0
使用以下
\set AUTOCOMMIT off
然后你可以结束
COMMIT;
于 2021-11-22T19:25:27.060 回答