在SQL Server 2008中的级联删除效果案例

2014-11-24 10:21:13 · 作者: · 浏览: 0

通常在项目中经常使用到这种知识点,今天举个案例加深印象!

首先如下:几个测试数据库其中包含两个表代码如下
view plain
CREATE DATABASE test

CREATE TABLE student
(
id int primary key identity(200901,1),--学号
sName varchar(100),--学生姓名
dId int --系编号
)

--院系
CREATE TABLE dep
(
dId int primary key identity(1,1),
dName varchar(100)
)
GO

这两个表非常简单,一个是学生表,一个是院系表,学生和院系是n:1的关系,学生表中的dId引用院系表中的dId,来建立两个表之间的关系!
添加两个表的关系约束的时候注意添加“ ON DELETE CASCADE”
view plain
ALTER TABLE student
ADD CONSTRAINT FK_sd
FOREIGN KEY(dId) REFERENCES dep(dId)
ON DELETE CASCADE

下面向上述表中添加测试数据:
view plain
--添加院系
INSERT INTO dep(dName) VALUES('计算机学院')
INSERT INTO dep(dName) VALUES('外国语学院')
INSERT INTO dep(dName) VALUES('体育学院')

--添加计算机学院学生
INSERT INTO student(sName,dId) VALUES('卢俊义',1)
INSERT INTO student(sName,dId) VALUES('宋江',1)
INSERT INTO student(sName,dId) VALUES('林冲',1)
INSERT INTO student(sName,dId) VALUES('关胜',1)
INSERT INTO student(sName,dId) VALUES('呼延灼',1)

--添加外语学院的学生
INSERT INTO student(sName,dId) VALUES('华容',2)
INSERT INTO student(sName,dId) VALUES('燕青',2)
INSERT INTO student(sName,dId) VALUES('孙二娘',2)

--添加体育学院的学生
INSERT INTO student(sName,dId) VALUES('菜园子',3)
INSERT INTO student(sName,dId) VALUES('扈三娘',3)
INSERT INTO student(sName,dId) VALUES('阮小气',3)

SELECT * FROM dep
SELECT * FROM student
GO

测试数据插入成功后,下面测试能否进行级联删除呢?
view plain
--删除计算机学院的学生
DELETE FROM dep WHERE dId='1'

上面语句执行后查询两个表中的数据发现计算机学院的所有学生全部被删除了!
任务完成,呵呵!!!

作者“proWang 任何...都不能撼动我的理想...”