PostgreSQL

 

使用 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, 

比如,清空 invoicecustomer 表:

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;

posted on   Colin88  阅读(59)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示