📜  PostgreSQL – 截断表(1)

📅  最后修改于: 2023-12-03 14:45:35.293000             🧑  作者: Mango

PostgreSQL – 截断表

在 PostgreSQL 中,我们可以使用 TRUNCATE TABLE 语句来快速删除表中的所有行,并将表恢复为其初始状态。截断表通常比DELETE语句更快,因为它不会记录每个被删除的行。

语法
TRUNCATE [ TABLE ] table_name [ CASCADE | RESTRICT ];
  • table_name – 要截断的表的名称
  • CASCADE – 如果表有任何外键依赖关系,可以删除 CASCADE选项也将删除与该表相关的序列和视图
  • RESTRICT – 如果表具有外键依赖项,则该操作被限制,并返回错误方法
示例

以下示例显示如何使用TRUNCATE TABLE语句截断表:

TRUNCATE TABLE customers;

上面的语句将删除customers表中的所有行。请注意,表结构保持不变。

要使用CASCADE选项截断具有外键依赖项的表,请使用以下语法:

TRUNCATE TABLE orders CASCADE;

上面的语句将删除order表的所有行,然后删除与该表相关的所有外键依赖项、序列和视图。

请注意,在TRUNCATE TABLE后,您需要重新插入行,并重新启动自增列:

INSERT INTO customers (name, email, phone) VALUES ('John Doe', 'john@example.com', '555-1234');
SELECT setval('customers_id_seq', max(id)) FROM customers;

上面的语句将插入一个新行,然后将customers_id_seq序列设置为最新插入的id值。

小结

TRUNCATE TABLE语句提供了一种快速和有效地删除表中所有行的方法。请注意,该操作不能回滚,并且需要重新插入行和重置自增列。使用CASCADE选项可用于删除表的所有外键依赖项、序列和视图。