[英]Transaction roll back not working in Postgresql
我正在使用PostgreSQL 9.1.4。
我将数据插入2个表,其工作正常。
我希望为我的表应用事务,两个表都存在于同一数据库中。 如果我的第二张桌子在任何时候都失败了,那我的第一张桌子应该回滚。
我尝试将“ max_prepared_transactions”中的属性设置为/etc/postgres/postgres.conf
非零值。 但是静止事务回滚不起作用。
在postgresql中,您无法在函数内编写提交或显式回滚。 我认为您可以使用begin end块来编写简单的代码
BEGIN;
insert into tst_table values ('ABC');
Begin
insert into 2nd_table values ('ABC');
EXCEPTION
when your_exception then
ROLL BACK;
END;
END;
可能您没有开始交易。
请试试
BEGIN;
INSERT INTO first_table VALUES(10);
-- second insert should fail
INSERT INTO second_table VALUES(10/0);
ROLLBACK;
我认为这会有所帮助
create proc DataInsertInTable
as
begin tran
insert into Table1 values('Table1Data','XYZ')
if(@@ERROR <>0)
begin
rollback tran;
return 0
end
insert into Table2 values('Table2Data','ABC')
if(@@ERROR <>0)
begin
rollback tran;
return 0
end
commit Tran
return 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.