SQL删除多表关联数据的三种方法
2013-10-21 22:22
281 查看
1.级联删除
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'
2.采用存储过程
A表:
AID Aname 主健:AID
B表:
BID BelongAID Bname 主健:BID,外健:BelongAID
C表:
CID BelongBID Cname 主健:CID,外健:BelongBID
D表:
DID BelongCID Dname 主健:DID,外健:BelongCID
其中:
A表和B表通过A.AID和B.BelongAID 创建了外健关系
B表和C表通过B.BID和C.BelongBID 创建了外健关系
C表和D表通过C.CID和D.BelongCID 创建了外健关系
3.采用触发器
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'
2.采用存储过程
A表:
AID Aname 主健:AID
B表:
BID BelongAID Bname 主健:BID,外健:BelongAID
C表:
CID BelongBID Cname 主健:CID,外健:BelongBID
D表:
DID BelongCID Dname 主健:DID,外健:BelongCID
其中:
A表和B表通过A.AID和B.BelongAID 创建了外健关系
B表和C表通过B.BID和C.BelongBID 创建了外健关系
C表和D表通过C.CID和D.BelongCID 创建了外健关系
3.采用触发器
相关文章推荐
- SQL--删除表数据的三种不同实现方法
- SQL删除重复数据方法
- sql下三种批量插入数据的方法
- sql删除多个字段重复数据有主键和没主键解决方法(mysql)
- SAP 后台数据表记录删除的三种方法
- sql语句删除数据表重复字段的方法
- SQL删除重复数据方法
- Activiti删除测试数据(存储过程,手动SQL两种方法)
- SQL删除重复数据方法
- sql中删除表中数据的两种方法
- SQL删除数据因外键关联导致花费时间太长----(外键列上增加索引解决此问题)
- sql下三种批量插入数据的方法
- SQL删除重复数据方法
- sql下三种批量插入数据的方法
- oracle删除重复数据三种方法
- SQL中两个关联表批量更新数据的方法
- SQL删除重复数据方法
- SQL中两个关联表批量更新数据的方法
- SQL删除重复数据方法
- SQL Server中删除重复数据的几个方法