1. 事务的开始和结束: 在 PostgreSQL 中,事务是自动开始的。每个 SQL 语句都在自己的事务中执行。如果你希望将多个 SQL 语句组合成一个事务,可以使用 BEGIN 和 COMMIT 或 ROLLBACK 语句显式地定义事务的边界。例如:
-- 开始一个事务
BEGIN;
-- 执行一些 SQL 操作
-- 提交事务,将更改永久保存
COMMIT;
或者如果事务出现问题,可以回滚(撤销)更改:
-- 开始一个事务
BEGIN;
-- 执行一些 SQL 操作
-- 回滚事务,撤销更改
ROLLBACK;
如果没有显式地指定事务的开始,每个 SQL 语句都将在自己的事务中执行,即每个语句都是一个独立的事务。
2. 自动提交: 默认情况下,PostgreSQL 是自动提交模式的,即每个 SQL 语句都被视为一个事务,并在执行后自动提交。如果你不想启用自动提交,可以使用 SET 语句禁用它:
-- 禁用自动提交
SET autocommit = OFF;
-- 开始一个事务
BEGIN;
-- 执行一些 SQL 操作
-- 提交事务,将更改永久保存
COMMIT;
在禁用自动提交模式下,你需要显式地使用 COMMIT 或 ROLLBACK 来结束事务。
3. 保存点(Savepoints): 你可以在事务中定义保存点,以便在事务进行的过程中进行部分回滚而不是整个事务。例如:
-- 开始一个事务
BEGIN;
-- 执行一些 SQL 操作
-- 定义一个保存点
SAVEPOINT my_savepoint;
-- 执行更多 SQL 操作
-- 部分回滚到保存点
ROLLBACK TO my_savepoint;
-- 提交事务,将更改永久保存
COMMIT;
在这个例子中,ROLLBACK TO my_savepoint; 将回滚到定义的保存点,而不是整个事务。
事务是保障数据完整性和一致性的关键机制之一。使用事务可以确保一组相关的数据库操作被视为一个逻辑单元,要么全部执行成功,要么全部失败。
转载请注明出处:http://www.zyzy.cn/article/detail/8112/PostgreSQL