首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

delete 语句删本表有关问题,有两字段关联了

2012-05-29 
delete 语句删本表问题,有两字段关联了A表的F1和F2字段关联,删除时会提示出错消息 547,级别 16,状态 1,第

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)) 

热点排行