最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。
所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。
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、统一改换查询出的字段。。这是不是想多了?