.
[color=green]级联删除:删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用。在级联删除中,还删除其外键值引用删除的主键值的所有行。[/color]
[color=green]但是我在最开始设计表的时候忘记级联了,现在需要修改,不会重建数据库吧!当然不会,我发现navicat就可以直接修改设置[/color]
1.
[img]http://dl.iteye.com/upload/picture/pic/99351/64c58935-e780-315d-8827-e519d57e117c.png[/img]
2.
[img]http://dl.iteye.com/upload/picture/pic/99353/46322e2e-72b7-3040-9134-25a20f507243.png[/img]
[color=green]级联删除:删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用。在级联删除中,还删除其外键值引用删除的主键值的所有行。[/color]
语法:
Foreign Key
(column[,...n])
references referenced_table_name[(ref_column[,...n])]
[on delete cascade]
[on update cascade]
注释:
column:列名
referenced_table_name:外键参考的主键表名称
ref_name:外键要参考的表的主键列
on delete:删除级联
on update:更新级联
SQL级联删除——删除主表同时删除从表——同时删除具有主外键关系的表
create table a
(
id varchar(20) primary key,
password varchar(20) not null
)
create table b
(
id int identity(1,1) primary key,
name varchar(50) not null,
userId varchar(20),
foreign key (userId) references a(id) on delete cascade
)
表B创建了外码userId 对应A的主码ID,声明了级联删除
测试数据:
insert a values ('11','aaa')
insert a values('23','aaa')
insert b values('da','11')
insert b values('das','11')
insert b values('ww','23')
删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了,这就是级联删除
delete a where id='11'
[color=green]但是我在最开始设计表的时候忘记级联了,现在需要修改,不会重建数据库吧!当然不会,我发现navicat就可以直接修改设置[/color]
1.
[img]http://dl.iteye.com/upload/picture/pic/99351/64c58935-e780-315d-8827-e519d57e117c.png[/img]
2.
[img]http://dl.iteye.com/upload/picture/pic/99353/46322e2e-72b7-3040-9134-25a20f507243.png[/img]