例如:
有下面五张表,五张表之间都通过主外键关联
Dept(DepId,DepName)Student(StuId,StuName,DepId)Teacher(TeacherId,TeacherName)Course(CourseId,CousreName,TeacherId)Score(CourseID,StuId,Score)现在如果对Dept表中,DepId进行修改或者删除,怎么修改?最好能有代码说明!!!
有下面五张表,五张表之间都通过主外键关联
Dept(DepId,DepName)Student(StuId,StuName,DepId)Teacher(TeacherId,TeacherName)Course(CourseId,CousreName,TeacherId)Score(CourseID,StuId,Score)现在如果对Dept表中,DepId进行修改或者删除,怎么修改?最好能有代码说明!!!
使用触发器又比较麻烦。建议删除以前先做下判断。--例如:
Dept(DepId,DepName)Student(StuId,StuName,DepId)
--删除一个DepIddelete from Dept where DepId=@DepId --传入的变量 (直接这样可以会报错)if(select count(*) from Student where DepId=@DepId )>0
select '存在约束不能删除'
else
delete from Dept where DepId=@DepId
2.修改DepId
3.修复其它表上对应的记录
指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则也将删除所有包含那些外键的行。ON UPDATE CASCADE
指定如果试图更新某一行中的键值,而该行的键值被其他表的现有行中的外键所引用,则组成外键的所有值也将更新到为该键指定的新值。
修改外键的属性添加上述。
2.要修改使用级联修改 ON UPDATE CASCADE
a.删除Student上原来的外键约束
b. alter table Student add constraint FK_S_id reference Dept(DepId) on update cascade;