delete 语句删本表问题,有两字段关联了
A表的F1和F2字段关联,删除时会提示出错
消息 547,级别 16,状态 1,第 1 行
DELETE 语句与 SAME TABLE REFERENCE 约束"FK_ORG_POSI_FK_ORG_PO_ORG_POS2"冲突。该冲突发生于数据库"TEST",表"dbo.A", column F2。
这要如何处理啊???因为关联的表很多..
------解决方案----------------------参考:
--例如
create table zb --主表
(
zb_id int primary key,
)
go
create table cb --从表
(
cb_id int primary key
FOREIGN KEY REFERENCES zb(zb_id) ON DELETE CASCADE , --指定级联删除
)
go
--主表数据
insert zb values(1)
insert zb values(2)
insert zb values(3)
--从表数据
insert cb values(1)
insert cb values(2)
insert cb values(3)
select * from zb
select * from cb
zb_id
-----------
1
2
3
(所影响的行数为 3 行)
mx_id
-----------
1
2
3
(所影响的行数为 3 行)
--级联删除
delete from zb where zb_id = 1
select * from zb
select * from cb
zb_id
-----------
2
3
(所影响的行数为 2 行)
mx_id
-----------
2
3
(所影响的行数为 2 行)
alter table cb add constraint fk_cb foreign key(mx_id) references zb(zb_id) on delete cascade
alter table 从表 add constraint 外键名 foreign key(从表字段) references 主表(主表字段) on delete cascade
------解决方案--------------------外键约束,如果你不想把从表中的数据也删除的话,那么请去掉外键约束,如果想一起删除的话,那么请参考下面的语句
SQL code
create table manager(
…………………………
foreign key(school_id) references school(school_id)
on delete cascade)
create table school(
school_id smallint identity(1,1),
……………………
primary key(school_id))