mssql语句cascade级联delete/update

--作用:如果父表中的记录被删除,则子表中对应该记录的自动被删除/更新
/*语法:
    foreign key (column,[,...n]) 
    references referenced_table_name[(ref_column[,...n])]
    on delete cascade [on update cascade]
*/
--父表:部门表
DROP TABLE IF EXISTS [Department]
create table Department
(    id int primary key,
    name nvarchar(20) not null
)
insert Department values 
(1,'部门1'),
(2,'部门2'),
(3,'部门3')
--子表:员工表
drop table if exists Employee
create table Employee
(    id int primary key,
    name nvarchar(20) not null,
    dept_id int not null,
    --foreign key (dept_id) 
    --references department(id) 
    --on delete cascade
    foreign key (dept_id) --子表外键
    references department(id) --父表主键
    on update cascade--更新级联
)
insert Employee values 
(1,'员工1',1),
(2,'员工2',1),
(3,'员工3',2),
(4,'员工4',2),
(5,'员工4',3)

--删除(更改)部门表的部门3,则员工表属于部门3的数据也会被删除
--delete a from Department as a
--where id=3
--删除子表员工表(employee)下的属于部门2的所有数据,父表部门表(department)的部门2不会删除
--delete employee from Employee
--where dept_id=1

update Department set id=30 where id=3
select *from Department
select * FROM Employee

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值