2

我正在数据库上编写一个触发器 INSTEAD OF INSERT ON 一个表,它进行了一些操作,然后将数据插入到不同的相关表中。现在我需要禁用自动提交并在触发器内设置不同的隔离级别,我该怎么办?

4

2 回答 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 回答