如何在PostgreSQL函数中使用COMMIT和ROLLBACK
发布时间:2020-12-13 15:49:44 所属栏目:百科 来源:网络整理
导读:我使用三个插入语句,如果第三个语句中有错误,我想回滚第一个和第二个.如果没有办法做到这一点,请告诉我一个不同的方法来处理PostgresqQL中的这个. 如果我使用COMMIT或ROLLBACK,我会收到错误. CREATE OR REPLACE FUNCTION TEST1 () RETURNS VOID LANGUAGE 'pl
我使用三个插入语句,如果第三个语句中有错误,我想回滚第一个和第二个.如果没有办法做到这一点,请告诉我一个不同的方法来处理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;$$; 上面的代码不起作用; PostgreSQL函数不支持COMMIT和ROLLBACK. 解决方法
您不能在函数中使用SAVEPOINT,COMMIT或ROLLBACK等事务语句.
在PL / pgSQL中启动块的BEGIN与启动事务的SQL语句BEGIN不同. 只需从函数中删除COMMIT,就可以得到解决方案:因为整个函数总是在单个事务中运行,所以第三个语句中的任何错误都将导致ROLLBACK也撤消前两个语句. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |