truncate與delete的區別
刪 除 數 據
刪除表中數據的方法有兩種,在指定的表或視圖中刪除滿足給定條件的數據可以使用DELETE語句;如果要清除表中全部數據,則還可以使用TRUNCATE TABLE語句.DELETE語句的語法如下.
命令格式:
DELETE[ FROM ] { table_name | view_name }
[ FROM { }]
[ WHERE ]
命令說明:
(1)DELETE語句中的語法項目含義與UPDATE語句相同.
(2)WHERE子句給出刪除數據所必須滿足的條件,省略WHERE子句時將刪除所有數據.
TRUNCATE TABLE語句用于清空表中所有數據,語法如下.
命令格式:
TRUNCATE TABLE table_name
TRUNCATE TABLE table_name與DELETE table_name都可以刪除表中全部記錄.
二者的相同點是都不刪除表的結構,索引,約束,規則和默認,如果希望刪除表的定義,必須使用DROP TABLE語句.TRUNCATE TABLE語句與DELETE語句的區別是,如果表中含有自動編號列,則使用TRUNCATE TABLE語句后,該列將復位為其初始seed值(經本人驗證通過SEQUENCE和TRIGGER實現的自動增加列是無法回復到SEQUENCE的初始值的,給大家帶來的誤解,深表歉意),而使用DELETE語句將不會復位.另外,使用TRUNCATE TABLE語句不記錄日志,而DELETE語句每刪除一條記錄,都要記入日志,因此TRUNCATE TABLE語句的操作速度要快于DELETE語句.
----------------------------------------------------------------------------------------------------------------------------------
普通方法:delete from tablename where...
快速刪除表中所有記錄 truncate table tablename
但后者不觸發表delete觸發器,所在的刪除動作不能事務回滾
經本人驗證通過SEQUENCE和TRIGGER實現的自動增加列是無法回復到SEQUENCE的初始值的,給大家帶來的誤解,深表歉意
開心過好每一天。。。。。