=================================版權聲明=================================
版權聲明:原創文章 禁止轉載
請通過右側公告中的“聯系郵箱(wlsandwho@foxmail.com)”聯系我
勿用於學術性引用。
勿用於商業出版、商業印刷、商業引用以及其他商業用途。
本文不定期修正完善。
本文鏈接:http://www.cnblogs.com/wlsandwho/p/5126708.html
恥辱牆:http://www.cnblogs.com/wlsandwho/p/4206472.html
=======================================================================
沒啥說的,鄙視那些無視版權隨意抓取博文的爬蟲小網站站長。http://www.cnblogs.com/wlsandwho
下面開始點名
Asp.net教程_mvc4_C#_Ado.net_seo_Java_HTML CSS教程
www.tzwhx.com
www.th7.cn
解決方案網
幫客之家 | IT技術 建站編程 電腦教程 www.bkjia.com
軟件開發,程序錯誤,exception
www.java123.net
一鍵重裝系統_打造智能化重裝系統軟件
www.bitscn.com
http://www.admin85.com/
http://www.3fwork.com/
技術博客-最新最全的技術疑難解決博客
好庫文摘 - 技術改變世界
紅黑聯盟:十三年IT技術門戶 精英夢想由此起航 (網絡安全,黑客防御,信息安全,編程,系統,網絡)
以上都是侵犯我版權的爬蟲網站。
(請勿在文中點擊或搜索上述網站,以防不測。)
=======================================================================
手冊上只說了:http://www.cnblogs.com/wlsandwho
可沒給例子。
今天有人問這個,我就索性寫了一個。
作為一只C++,每天在SQLServer群里做科普,好奇怪的樣子。http://www.cnblogs.com/wlsandwho
=======================================================================
下面的示例代碼中,表間關系為“表A的a引用表B中的b作為外鍵”。王林森,TRUNCATE TABLE,外鍵,表,該表正由 FOREIGN KEY 約束引用,無法,截斷,wlsandwho
試圖執行truncate table B
代碼需要一句一句執行:http://www.cnblogs.com/wlsandwho
1 USE tempdb 2 GO 3 4 --創建表B 5 CREATE TABLE tB(b NVARCHAR(10) PRIMARY KEY) 6 GO 7 --插入一個測試數據 8 INSERT INTO tB 9 ( b ) 10 VALUES ( N'wlsandwho' -- b - nvarchar(10) 11 ) 12 GO 13 14 --創建表A 15 CREATE TABLE tA(a NVARCHAR(10) ) 16 GO 17 --添加外鍵 18 ALTER TABLE tA 19 ADD CONSTRAINT FK_fromBb FOREIGN KEY(a) 20 REFERENCES tB(b) 21 GO 22 23 --添加測試數據 24 --INSERT INTO tA( a ) VALUES ( N'thbytwo')--這一行無法運行,因為B.b中沒有這個值 25 INSERT INTO tA( a ) VALUES ( N'wlsandwho') 26 GO 27 28 --試圖截斷表B,失敗 29 TRUNCATE TABLE tB 30 GO 31 32 --試圖清空表A后截斷表B,失敗 33 DELETE FROM tA 34 GO 35 SELECT * FROM tA 36 GO 37 TRUNCATE TABLE tB 38 GO 39 40 --恢復之前的場景 41 INSERT INTO tA( a ) VALUES ( N'wlsandwho') 42 GO 43 44 --試圖先刪除外鍵再截斷,成功 45 ALTER TABLE tA DROP CONSTRAINT FK_fromBb 46 GO 47 TRUNCATE TABLE tB 48 GO 49 50 --結論:不能對FOREIGN KEY約束引用的表使用 TRUNCATE TABLE 51 DROP TABLE tB 52 DROP TABLE tA 53 GO
順便說下,我很少用外鍵。因為我相信我的前台同學,也就是我。我也相信我的后台同學,也是我。我也相信我的數據庫同學,沒錯,還是我。http://www.cnblogs.com/wlsandwho
反正小作坊能跑就行了。什么?不能跑?我跑!http://www.cnblogs.com/wlsandwho
=======================================================================
用十分二十分鍾的時間自己動動手驗證一下,總比在企鵝群里傻傻的等答案要好。http://www.cnblogs.com/wlsandwho
=======================================================================
如果你們歷經千辛萬苦才找到這篇博客,那一定是下面的原因:http://www.cnblogs.com/wlsandwho
所以你需要點“推薦”和“關注”,這樣下次才能更快更好的找到資料。http://www.cnblogs.com/wlsandwho
=======================================================================
(友情支持請掃描這個)
微信掃描上方二維碼捐贈
=======================================================================
20160115
為了更完整和嚴密地說明問題,在44行之前再添加一個測試
1 --試圖先禁用外鍵再截斷,失敗 2 ALTER TABLE tA NOCHECK CONSTRAINT FK_fromBb 3 TRUNCATE TABLE tB 4 ALTER TABLE tA CHECK CONSTRAINT FK_fromBb