日期:2014-05-17  浏览次数:20562 次

求助!SQLServer如何删除多表(10表以上)中的同一个外键
最近在做一个OA系统,用SQLServer2008数据库。系统里有个删除员工的功能,但是考虑到其他表中有员工表的外键,删除时应该将其他表中相关的记录全部删除,请问如何写语句?
比如员工表是OA_User,员工编号Uid,数据库中最少有10张表里有Uid外键,请问如何删除其他表中的相关记录?
多表删除外键 SQLServer2008

------解决方案--------------------
给你一个例子哈:

create table OA_User(Uid int primary key ,uname varchar(20))


create table OA_tb
(
id int identity(1,1)primary key ,
Uid int foreign key references OA_User(Uid) on delete cascade --级联删除
)

insert into OA_User
values(1,'张三'),
      (2,'李四')
      
insert into OA_tb
values(1),(1),(1),(2),(1)      


--删除主表中udi 为2的记录,没有报错
delete from oa_user where uid = 2

--附表中的uid为2的记录,自动删除
select * from oa_tb 
/*
id Uid
1 1
2 1
3 1
5 1
*/

------解决方案--------------------
引用:
级联删除没怎么用过,语法什么的都不太明白,我先去熟悉熟悉。


你可以这么来修改的:

1、找到附表,也就是引用oa_user表中的uid的表,然后找到外键,右键,选择“修改”


2、在删除中选项“级联”