postgresql 中的事务使用

postgresql 中的事务使用

BEGIN;
UPDATE accounts SET balance = balance - 100.00
    WHERE name = 'Alice';
-- etc etc
COMMIT;
-- ROLLBACK;  -- 返回,在做测试的时候,这个语句会非常便利

在PostgreSQL中,开启一个事务需要将SQL命令用BEGINCOMMIT命令包围起来。PostgreSQL实际上将每一个SQL语句都作为一个事务来执行。如果我们没有发出BEGIN命令,则每个独立的语句都会被加上一个隐式的BEGIN以及(如果成功)COMMIT来包围它。一组被BEGINCOMMIT包围的语句也被称为一个事务块

注意: 某些客户端库会自动发出BEGINCOMMIT命令,因此我们可能会在不被告知的情况下得到事务块的效果。具体请查看所使用的接口文档。

例如:navicat会隐士加上 BEGIN 和 COMMIT


使用案例

BEGIN;
CREATE TABLE TEST (
	id serial,
	name varchar(200)
);
INSERT INTO TEST(NAME) VALUES('a'),('B'),('C');
SELECT * FROM TEST;

DROP TABLE TEST;
SELECT * FROM TEST;

COMMIT; -- 提交
ROLLBACK; -- 回滚

postgresql 中的事务使用

开发阶段,使用回滚,便于数据的测试


参考

参考案例 http://www.postgres.cn/docs/9.6/tutorial-transactions.html