SAVEPOINT — 在当前事务中定义一个新的保存点
SAVEPOINT savepoint_name
SAVEPOINT
在当前事务中建立一个新保存点。
保存点是事务内的一种特殊标记,它允许所有在它被建立之后执行的命令被 回滚,把该事务的状态恢复到它处于保存点时的样子。
savepoint_name
给新保存点的名字。
使用ROLLBACK TO SAVEPOINT回滚到一个保存点。 使用RELEASE SAVEPOINT销毁一个保存点, 但保持在它被建立之后执行的命令的效果。
保存点只能在一个事务块内建立。可以在一个事务内定义多个保存点。
要建立一个保存点并且后来撤销在它建立之后执行的所有命令的效果:
BEGIN;
INSERT INTO table1 VALUES (1);
SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (2);
ROLLBACK TO SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (3);
COMMIT;
上面的事务将插入值 1 和 3,但不会插入 2。
要建立并且稍后销毁一个保存点:
BEGIN;
INSERT INTO table1 VALUES (3);
SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (4);
RELEASE SAVEPOINT my_savepoint;
COMMIT;
上面的事务将插入 3 和 4。
当建立另一个同名保存点时,SQL 要求之前的那个保存点自动被销毁。在 PostgreSQL中,旧的保存点会被保留,不过在进行 回滚或释放时只能使用最近的那一个(用 RELEASE SAVEPOINT
释放较新的保存点将会 导致较旧的保存点再次变得可以被 ROLLBACK TO SAVEPOINT
和 RELEASE SAVEPOINT
访问)。在其他方面,
SAVEPOINT
完全符合 SQL。
pgbench — 在PostgreSQL上运行一个基准测试大纲pgbench-i [option...] [dbname]pgbench [option...] [dbname]描述 pgbench是一...
postmaster — PostgreSQL数据库服务器大纲postmaster [option...]描述 postmaster是postgres的一个废弃的别名。参见 postgres...
Vim允许自定义每个窗口底部的状态条显示的文字,你可以通过设置statusline选项来进行自定义。执行下面的命令::set statusline=%...
让我们创建一个Potion文件作为插件的测试样本。factorial = (n):total = 1n to 1 (i):total *= i.total.10 times (i):i string p...
FieldsStr/FieldsExStr字段获取FieldsStr用于获取指定表的字段,并可给定字段前缀,字段之间使用","符号连接成字符串返回...
SVG 渐变 - 线性 SVG 线性渐变指的是沿着直线改变颜色,要插入一个线性渐变,只需要在 SVG 文件的 defs 元素内部,创建一个 line...
XSL-FO retrieve-marker 对象XSL-FO 参考手册定义和用法 fo:retrieve-marker 对象与 fo:marker 一起使用来创建运行的页眉或页脚...
XSL-FO table-caption 对象XSL-FO 参考手册定义和用法 fo:table-caption 对象包含了使用 fo:table-and-caption 对象定义的表格标...
XML Schema simpleType 元素 完整 XML Schema 参考手册定义和用法 simpleType 元素定义一个简单类型,规定与具有纯文本内容的元...