實(shí)例理解SQL中truncate和delete的區(qū)別
本文以一個(gè)簡(jiǎn)單實(shí)例為大家介紹了SQL中truncate和delete的區(qū)別,幫助大家理解,具體內(nèi)容如下
---創(chuàng)建表Table1 IF OBJECT_ID('Table1','U') IS NOT NULL DROP TABLE Table1 GO CREATE TABLE Table1 (ID INT NOT NULL, FOID INT NOT NULL) GO --插入測(cè)試數(shù)據(jù) INSERT INTO Table1 VALUES(1,101),(2,102),(3,103),(4,104) GO ---創(chuàng)建表Table2 IF OBJECT_ID('Table2','U') IS NOT NULL DROP TABLE Table2 GO CREATE TABLE Table2 ( FOID INT NOT NULL) GO --插入測(cè)試數(shù)據(jù) INSERT INTO Table2 VALUES(101),(102),(103),(104) GO SELECT * FROM Table1 GO SELECT * FROM Table2 GO
在Table1表中創(chuàng)建觸發(fā)器,當(dāng)表中的數(shù)據(jù)被刪除時(shí)同時(shí)刪除Table2表中對(duì)應(yīng)的FOID
CREATE TRIGGER TG_Table1 ON Table1 AFTER DELETE AS BEGIN DELETE FROM TA FROM Table2 TA INNER JOIN deleted TB ON TA.FOID=TB.FOID END GO
---測(cè)試DELETE刪除操作 DELETE FROM Table1 WHERE ID=1 GO ---執(zhí)行觸發(fā)器成功,Table2表中的FOID=101的數(shù)據(jù)也被刪除 SELECT * FROM Table1 GO SELECT * FROM Table2
---測(cè)試TRUNCATE刪除操作 TRUNCATE TABLE Table1 GO ---Table2中的數(shù)據(jù)沒(méi)有被刪除 SELECT * FROM Table1 GO SELECT * FROM Table2
---查看TRUNCATE和DELETE的日志記錄情況 CHECKPOINT GO SELECT * FROM fn_dblog(NULL,NULL) GO DELETE FROM Table2 WHERE FOID=102 GO SELECT * FROM fn_dblog(NULL,NULL)
在第四行記錄有一個(gè)lop_delete_rows,lcx_heap的刪除操作日志記錄
----TRUNCATE日志記錄 CHECKPOINT GO SELECT * FROM fn_dblog(NULL,NULL) GO TRUNCATE TABLE Table2 GO SELECT * FROM fn_dblog(NULL,NULL) GO
TRUNCATE操作沒(méi)有記錄刪除日志操作
主要的原因是因?yàn)門(mén)RUNCATE操作不會(huì)激活觸發(fā)器,因?yàn)門(mén)RUNCATE操作不會(huì)記錄各行的日志刪除操作,所以當(dāng)你需要?jiǎng)h除一張表的數(shù)據(jù)時(shí)你需要考慮是否應(yīng)該如有記錄日志刪除操作,而不是根據(jù)個(gè)人的習(xí)慣來(lái)操作。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家區(qū)分SQL中truncate和delete的使用方法有所幫助。
- Oracle給用戶授權(quán)truncatetable的實(shí)現(xiàn)方案
- delete from 表名與truncate table 表名區(qū)別
- SQL中Truncate的用法
- golang實(shí)戰(zhàn)之truncate日志文件詳解
- tf.truncated_normal與tf.random_normal的詳細(xì)用法
- smarty中改進(jìn)truncate使其支持中文的方法
- SQL Server中TRUNCATE事務(wù)回滾操作方法
- 詳解SQL中drop、delete和truncate的異同
- Mysql開(kāi)啟慢SQL并分析原因
- Truncate Table的用法講解
相關(guān)文章
sqlserver 查詢數(shù)據(jù)庫(kù)大小的方法
總部要求每一個(gè)月,獲取一次ERP數(shù)據(jù)庫(kù)增長(zhǎng)大小。我收到的樣版是一張截圖,是直接查看數(shù)據(jù)庫(kù)文件大小2012-08-08SQL語(yǔ)句查詢數(shù)據(jù)庫(kù)中重復(fù)記錄的個(gè)數(shù)
一個(gè)sql語(yǔ)句:一個(gè)表test有四個(gè)字段id,a,b,c,如果表中的記錄有三個(gè)字段a,b,c都相等,則說(shuō)明這條記錄是相同的,求相同的記錄的個(gè)數(shù) 。2009-11-11數(shù)據(jù)庫(kù)中identity字段不必是系統(tǒng)產(chǎn)生的唯一值 性能優(yōu)化方法(新招)
具有identity特性的字段,其值是系統(tǒng)產(chǎn)生的,自動(dòng)增加的,所以,一般把這個(gè)用在一個(gè)表的主鍵上。2011-09-09SQL數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程示例解析
這篇文章主要針對(duì)SQL數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程示例進(jìn)行解析,感興趣的小伙伴們可以參考一下2016-04-04當(dāng)master down掉后,pt-heartbeat不斷重試會(huì)導(dǎo)致內(nèi)存緩慢增長(zhǎng)的原因及解決辦法
這篇文章主要介紹了當(dāng)master down掉后,pt-heartbeat不斷重試會(huì)導(dǎo)致內(nèi)存緩慢增長(zhǎng)的原因及解決辦法,需要的朋友可以參考下2016-10-10我也有微信朋友圈了 Android實(shí)現(xiàn)
最近寫(xiě)了一個(gè)簡(jiǎn)單的朋友圈程序,包含了朋友圈的列表實(shí)現(xiàn),視頻的錄制、預(yù)覽與上傳,圖片可選擇拍照或者從相冊(cè)選取,從相冊(cè)選取可以一次選擇多張照片,并且限制照片的張數(shù),想擁有真正屬于自己的朋友圈嗎?快來(lái)圍觀2016-05-05SQL Server2019數(shù)據(jù)庫(kù)備份與還原腳本(批量備份)
本文主要介紹了SQL Server2019數(shù)據(jù)庫(kù)備份與還原腳本,數(shù)據(jù)庫(kù)可批量備份,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11