首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一个sql server 2005 的删除有关问题

2012-03-20 
一个sql server 2005 的删除问题现有系部表,专业表,班级表,学生表,如果删除系部表要求系部以下所有的专业,

一个sql server 2005 的删除问题
现有系部表,专业表,班级表,学生表,如果删除系部表要求系部以下所有的专业,专业下所有的班级,班级下所有的学生都要删除,我把更新规则和删除规则都设置成层叠了,但是只要涉及到2个以上的删除都无效,我应该怎么操作。

[解决办法]
触发器

话说你也放点数据什么的出来啊?
[解决办法]
参考:

SQL code
/*标题:两表通过字段关联进行级联删除。作者:爱新觉罗·毓华(十八年风雨,守得冰山雪莲花开) 时间:2008-11-20地点:广东深圳*/create table ta(id int not null)create table tb(id int , aid int)insert into ta values(1)insert into ta values(2)insert into tb values(1 , 1)insert into tb values(2 , 2)insert into tb values(3 , 1)go--一、查看原始数据--ta表的原始数据select * from ta/*id          ----------- 12*/--tb表的原始数据select * from tb/*id          aid         ----------- ----------- 1           12           23           1*/--二、看看没有创建级联删除时的情况(删除ta表id=1的数据,看看是否影响tb表)delete from ta where id = 1select * from ta/*id          ----------- 2*/select * from tb/*id          aid         ----------- ----------- 1           12           23           1*/--三、恢复原始数据,创建级联删除,删除ta表id=1的数据,看看是否影响tb表insert into ta values(1)--为ta创建主健alter table ta add constraint pk_ta_id primary key (id)go--为tb创建外健,并指定级联删除alter table tb add constraint fk_tb_aid foreign key (aid) references ta(id) on delete cascadegodelete from ta where id = 1select * from ta/*id          ----------- 2*/select * from tb/*id          aid         ----------- ----------- 2           2*/--删除级联约束alter table tb drop constraint fk_tb_aidgo--删除测试表drop table ta , tbgo
[解决办法]
最简单省事的办法,为要删除的表设置外键,并加上on delete cascade关键字,绝不会出现说删不掉的事情.
[解决办法]
用触发器或者级联删除 自己去查查。

热点排行