在postgres中支持什么是事务性的

LiK*_*Kao 6 postgresql transactions

我正在尝试找出postgres可以在事务内部安全处理的内容,但我在postgres手册中找不到相关信息.到目前为止,我发现了以下内容:

  • UPDATE,INSERT并且DELTE在事务内部完全支持并在事务未完成时回滚
  • DROP TABLE在事务中没有安全处理,并且使用a撤消CREATE TABLE,因此重新创建已删除的表但不重新填充它
  • CREATE TABLE 也不是真正的交易,而是与相应的撤消 DROP TABLE

它是否正确?我也找不到关于ALTER TABLE和处理的任何提示TRUNCATE.这些处理方式在交易中是否安全?不同类型的交易和不同版本的postgres之间的处理有区别吗?

a_h*_*ame 6

DROP TABLE 交易的.要撤消此操作,您需要发出ROLLBACK不是a CREATE TABLE.同样适用CREATE TABLE(使用ROLLBACK也可以撤消).

ROLLBACK 始终是撤消事务的唯一正确方法 - 包括ALTER TABLE和TRUNCATE.

Postgres中唯一永远不会发生事务的是序列生成的数字(CREATE/ALTER/DROP SEQUENCE本身也是事务性的).


Den*_*rdy 4

据我所知,所有这些命令都是事务感知的,除了TRUNCATE ... RESTART IDENTITY(甚至从 9.1 开始就是事务性的。)

请参阅并发控制事务相关命令的手册。