 |
专业介绍 |
 |
|
|
|
|
|
| SQLServer2005 外键约束和层叠删除 |
|
发表日期:
2010-05-08 |
|
|
我们在设计数据库,如果库中存在大类和子类两个表,我们常常希望在删除大类的时候自动删除其子类,那么我们在SQL SERVER2005应该如何做呢?我们在此举一个我们大家都熟悉的学生和教师为例: 表1:Teacher CREATE TABLE Teacher( cTeacherCode char(4) NOT NULL, vTeacher varchar(8) , PRIMARY KEY CLUSTERED (cTeacherCode ), )
表2:Student CREATE TABLE Student( cStudentCode char(6) NOT NULL, vStudent varchar(8) , cTeacherCode char(10) , PRIMARY KEY CLUSTERED (cStudentCode), FOREIGN KEY (cKindCode) REFERENCES BigKind (cTeacherCode) )
一、首先创建两个表,表2设置外键。如下代码: 二、完成表后,在数据里有数据库关系图,点右键新建数据库关系图。如下图所示:
 三、选中你所要的两个表,BigKind与ChildKind如下图所示:

四、选中BigKind中的一行,拖动到ChildKind表上,如下图1所示。完成之后则会弹出两对话框,一个是表和列对话框,另一个是外键关系对话框。在外键关系对话框中,选择数据库设计器中的INSERT和UPDATE规则,在更新规则和删除规则中选择层叠,如下图2所示。这样就完成OK了,如下图3所示。
 (图1)
 
(图2)
 (图3)
五、然后你就可以删除你不想要的数据了。
注意: 1、添加数据的时候请注意,必须的先添加第一级的数据,也就是BigKind表。否则,
则会出现“INSERT 语句与 FOREIGN KEY 约束"FK_Province_Nation"冲突的错误提示
。 2、第二级所定义的外键必须是第一级的主键。也就是上面的BigKind表中的KindCode.
附:你可以试试为下面两个表大类BigKind与小类ChildKind完成层叠删除
表1:BigKind CREATE TABLE BigKind( cKindCode char(10) NOT NULL, vKindName varchar(8) NULL, PRIMARY KEY CLUSTERED (cKindCode), )
表2:ChildKind CREATE TABLE ChildKind( cChildCode char(10) NOT NULL, vChildName varchar(8) NULL, cKindCode char(10) NULL, PRIMARY KEY CLUSTERED (cChildCode), FOREIGN KEY (cKindCode) REFERENCES BigKind (cKindCode) ) |
|
| |
|