我对postgresql中的事务有点新意。我读了很多教程,但我想做的是... 如果我有很多查询,例如:
INSERT INTO a (id) VALUES (1)
INSERT INTO a (id) VALUES (2)
INSERT INTO a (id) VALUES (3)
INSERT INTO a (id) VALUES (4)
....
如果由于某些问题在第3个或任何第n个查询中失败,我想要的是自动回滚所有其他先前的查询。
我的问题是,在postgresql中有没有办法做到这一点?
答案 0 :(得分:1)
如果您有事务,如果任何查询失败,PostgreSQL将自动ROLLBACK整个事务。如果你提交ROLLBACK或COMMIT没关系,那么回滚就会跟着。此外,任何提交的查询都将以SQL异常结束。
这是对交易概念的严格看法:全有或全无。
如果您不想要此类行为,则需要使用 savepoints 或 plpgsql 阻止EXCEPTION处理。