所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。
http://bbs.csdn.net/topics/390633551
最近在做一个OA系统,用SQLServer2008数据库。系统里有个删除员工的功能,但是考虑到其他表中有员工表的外键,删除时应该将其他表中相关的记录全部删除,请问如何写语句?
比如员工表是OA_User,员工编号Uid,数据库中最少有10张表里有Uid外键,请问如何删除其他表中的相关记录?
- 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
- */
也可以通过图形化操作来实现:
2、统一改换查询出的字段。。这是不是想多了?
在论坛中出现的比较难的sql问题:10(删除多表中的同一个外键)
原文:https://www.cnblogs.com/lonelyxmas/p/12019992.html