Rah*_*our 5 postgresql postgresql-10
我使用三个插入语句,如果第三个语句中有错误,我想回滚第一个和第二个.如果没有办法做到这一点,请告诉我一个不同的方法来处理PostgresqQL中的这个.
如果我使用COMMIT或ROLLBACK,我收到错误.
CREATE OR REPLACE FUNCTION TEST1 ()
RETURNS VOID
LANGUAGE 'plpgsql'
AS $$
BEGIN
INSERT INTO table1 VALUES (1);
INSERT INTO table1 VALUES (2);
INSERT INTO table1 VALUES ('A');
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END;$$;
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用; COMMIT并且ROLLBACKPostgreSQL函数不支持.
Lau*_*lbe 13
不能使用交易之类的语句SAVEPOINT,COMMIT或ROLLBACK在一个函数.
在BEGIN启动PL/pgSQL的一个块是从SQL语句不同BEGIN的是启动一个事务.
只需COMMIT从您的函数中删除,您就拥有了解决方案:由于整个函数始终在单个事务中运行,因此第三个语句中的任何错误都将导致ROLLBACK同时撤消前两个语句.
| 归档时间: |
|
| 查看次数: |
13319 次 |
| 最近记录: |