postgresql 中的事务使用
postgresql 中的事务使用
BEGIN;
UPDATE accounts SET balance = balance - 100.00
WHERE name = 'Alice';
-- etc etc
COMMIT;
-- ROLLBACK; -- 返回,在做测试的时候,这个语句会非常便利
在PostgreSQL中,开启一个事务需要将SQL命令用BEGIN
和COMMIT
命令包围起来。PostgreSQL实际上将每一个SQL语句都作为一个事务来执行。如果我们没有发出BEGIN
命令,则每个独立的语句都会被加上一个隐式的BEGIN
以及(如果成功)COMMIT
来包围它。一组被BEGIN
和COMMIT
包围的语句也被称为一个事务块。
注意: 某些客户端库会自动发出BEGIN
和COMMIT
命令,因此我们可能会在不被告知的情况下得到事务块的效果。具体请查看所使用的接口文档。
例如: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; -- 回滚
开发阶段,使用回滚,便于数据的测试
参考
参考案例 http://www.postgres.cn/docs/9.6/tutorial-transactions.html