在 PostgreSQL 中,TRUNCATE 是一个用于快速删除表中所有行的命令。与 DELETE 不同,TRUNCATE 不仅删除表中的所有数据,还释放存储空间,因此它通常比 DELETE 操作更快。

以下是 TRUNCATE 命令的一般语法:
TRUNCATE [ TABLE ] table_name [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ];

其中:

  •  table_name 是要截断(即删除所有行)的表的名称。

  •  RESTART IDENTITY 将序列重新设置为初始值。

  •  CONTINUE IDENTITY 保留序列的当前值。

  •  CASCADE 将截断操作应用于所有依赖于目标表的外键关系。

  •  RESTRICT 会阻止截断操作,除非没有其他表依赖于目标表。


以下是一些 TRUNCATE 命令的示例:
-- 截断名为 "my_table" 的表,并重置序列
TRUNCATE my_table RESTART IDENTITY;

-- 截断名为 "another_table" 的表,保留序列的当前值
TRUNCATE another_table CONTINUE IDENTITY;

需要注意的是,TRUNCATE 操作是不可逆的,它会立即删除表中的所有数据。因此,在使用 TRUNCATE 前,请确保你真的希望删除表中的所有数据。

另外,TRUNCATE 操作是一个DDL(数据定义语言)操作,它会自动提交当前事务。因此,它无法在一个事务内与其他DML(数据操纵语言)语句一起使用,而且不能在事务内回滚。


转载请注明出处:http://www.zyzy.cn/article/detail/8772/PostgreSQL