【发布时间】:2014-03-29 18:08:12
【问题描述】:
我尝试在 PostgreSQL 9.1 数据库中编写触发器,类似于:
CREATE FUNCTION test_trigger()
RETURNS trigger AS
BEGIN
IF () THEN INSERT INTO...;
ELSEIF ()...;
...
...
END IF;
RETURN NULL;
END
然后我得到了这个错误:
Cannot commit when autoCommit is enabled error
所以我尝试使用set autocommit=off; 禁用它,但随后收到此消息:
ERROR: SET AUTOCOMMIT TO OFF is no longer supported
一个建议的解决方案是使用BEGIN 启动事务,但我不知道如何编辑我的触发器函数来执行此操作。
更新
我尝试通过以下方式通过触发器创建禁用自动提交:
BEGIN;
CREATE FUNCTION test_trigger()
RETURNS trigger AS
$func$
BEGIN
IF () THEN INSERT INTO...;
ELSEIF ()...;
...
...
END IF;
RETURN NULL;
END
COMMIT;
$func$
LANGUAGE plpgsql;
但每次运行时连接都会关闭。
【问题讨论】:
标签: database postgresql triggers plpgsql quotes