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

解决方案 »

  1.   

    直接用级联删除就可以了哈on delete cascade
      

  2.   

    给你一个例子哈: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
    */
      

  3.   


    你可以这么来修改的:1、找到附表,也就是引用oa_user表中的uid的表,然后找到外键,右键,选择“修改”
    2、在删除中选项“级联”