使用 DELETE
语句可以删除数据表里的所有数据。然而,对于包含大量数据的表来说,使用 TRUNCATE TABLE
将更高效。
TRUNCATE TABLE
语句在不扫描表的情况下,删除表里的所有数据。这就是它比 DELETE
快的原因。另外,它立即回收存储空间,所以不必执行随后的 VACUUM 操作,这在数据量大的表里是非常有用的。
清空所有数据
TRUNCATE TABLE
最简单的用法如下:
TRUNCATE TABLE table_name;
比如,要清空 sjk66
表的所有数据,可以这样写:
TRUNCATE TABLE sjk66;
还可以在清空数据的同时,重置所关联的序列计数:
TRUNCATE TABLE table_name RESET IDENTITY;
清空多表的数据
在 TRUNCATE TABLE
后面指定多个表名,即可清空多张表。表名之间使用逗号分隔:
TRUNCATE TABLE table_name1, table_name2, …
比如,清空 invoice
和 customer
表:
TRUNCATE TABLE invoice, customer;
清空被外键引用的表
有时候,要清空的表可能被其它表通过外键引用,这时,那些被外键引用的记录将不会清空。
通过添加 CASCADE
,可以将主表中的记录及外键引用的其它表的相关数据一起清空:
TRUNCATE TABLE table_name CASCADE;
TRUNCATE TABLE 和 ON DELETE 触发器
TRUNCATE TABLE
清空数据时,不会触发任何 ON DELETE
触发器。如果要触发,需要定义数据表的 BEFORE TRUNCATE
和/或 AFTER TRUNCATE
触发器。
TRUNCATE TABLE 和事务
TRUNCATE TABLE
是事务安全的。意思是,如果将它放在诸如 BEGIN ... ROLLBACK
的事务语句里,清空操作可以安全的回滚。
删除表
DROP TABLE IF EXISTS tablename;标签:PostgreSQL,TRUNCATE,清空,外键,table,TABLE,DELETE From: https://www.cnblogs.com/colin88/p/16594263.html