=================================版权声明=================================

版权声明:原创文章 止转载 

请通过右侧公告中的“联系邮箱(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.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