SQL Server 2005中如何创建和删除外键


最近了解到数据库中创建外键的方法,便记录下来,以防忘记。在SQL Server 2005中,为了保证数据库的完整性,创建外键是我们经常用到的。创建外键有两种直接的方法。一种是通过写代码创建外键,一种是通过新建数据库关系图(不用写代码)创建外键。在建表前考虑清楚了并在建表的时候就创建外键当然很好,然而,手动建表且没有创建外键,但在后面需要创建外键时怎么办呢?

在创建外键之前需建立表,例如:学生——选课表

//学生表
Create Table Student
( 
Sno CHAR(10) primary key,
Sname CHAR(10) not null,
Ssex CHAR(2),
Sage INT,
Sdept Varchar(10)
)
//课程表
Create Table Course
( 
Cno CHAR(4) primary key,
CName CHAR(20) not null,
Cpno CHAR(4) ,
Ccredit INT
)
//选课表
Create TABLE SC
( 
Sno CHAR(10) not null,
Cno CHAR(4) not null,
Grade INT,
Primary key(Sno,Cno),
Foreign key (Sno) references Student(Sno),
Foreign key (Cno) references Course(Cno)
)

注:当然也可以手动的创建表。以上代码中已经在定义表是创建外键。如果创建表时没有创建外键,则:、

(1) 运用编写代码增加外键

alter table SC 
add constraint SMPKey(外键名) foreign key(Sno) references student(Sno),
add constraint CMPKey(外键名) foreign key(Cno) references Course(Cno)

(2)新建数据库关系图增加外键

展开所建数据库,找到数据库关系图,右键——>新建数据库关系图,在弹出的对话框中添加与要增加外键的表以及包含外键的表,单击“添加”,然后关闭该对话框。选择基表中创建外键的字段,指向另一个表中对应的字段,出现两个的对话框,单击“确定”,并展开“外键关系”对话框中“数据库设计器”下的“INSERT和UPDATE规范”。将更新规则后的“无操作”改为“层叠”,同理,将“删除规则”后的“无操作”改为“层叠”,单击“确定”。这样,基表与另一张表的外键关系就建立好了。同理操作其他表,操作完成后保存该数据关系图即可。此处得到的数据库关系图。

注:建立外键时,两张表中要创建外键关系的字段的数据类型、长度以及是否可以为空必须一致,否则不能创建成功。

(3)删除外键:

展开所建表中的键,找到想删除的外键,单击右键,选择“删除”,在弹出的对话框中点击“确定”即可。


如何实现级联删除效果?

解决方法:

设置完成后,为了实现删除从表的记录时主表中的外键数据一起删除的级联效果,可以在“属性-数据库设计-INSERT和UPDATE规范”中将“更新规则”和“删除规则”中选择“层叠”。