📅  最后修改于: 2023-12-03 14:45:35.293000             🧑  作者: Mango
在 PostgreSQL 中,我们可以使用 TRUNCATE TABLE 语句来快速删除表中的所有行,并将表恢复为其初始状态。截断表通常比DELETE语句更快,因为它不会记录每个被删除的行。
TRUNCATE [ TABLE ] table_name [ 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选项可用于删除表的所有外键依赖项、序列和视图。