USE [CXLED]
GO
ALTER TABLE [dbo].[Led_Task] WITH CHECK ADD CONSTRAINT [FK_task_id2] FOREIGN KEY([task_id])
REFERENCES [dbo].[Tasks] ([task_id])
ON UPDATE CASCADE
ON DELETE CASCADE
go这是级联删除的sql语句,这个表中,我已经添加了另一个列级联删除,这个语句跟那个除了列名改了,其他,都一样。但是无法添加级联删除。提示错误如下:
将 FOREIGN KEY 约束 'FK_task_id2' 引入表 'Led_Task' 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
消息 1750,级别 16,状态 0,第 1 行
无法创建约束。请参阅前面的错误消息。感觉语法对着的,似乎是因为同一个表中已经有一个列创建了级联删除,所以这个列无法创建。但是不肯定,不知道为什么。
GO
ALTER TABLE [dbo].[Led_Task] WITH CHECK ADD CONSTRAINT [FK_task_id2] FOREIGN KEY([task_id])
REFERENCES [dbo].[Tasks] ([task_id])
ON UPDATE CASCADE
ON DELETE CASCADE
go这是级联删除的sql语句,这个表中,我已经添加了另一个列级联删除,这个语句跟那个除了列名改了,其他,都一样。但是无法添加级联删除。提示错误如下:
将 FOREIGN KEY 约束 'FK_task_id2' 引入表 'Led_Task' 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
消息 1750,级别 16,状态 0,第 1 行
无法创建约束。请参阅前面的错误消息。感觉语法对着的,似乎是因为同一个表中已经有一个列创建了级联删除,所以这个列无法创建。但是不肯定,不知道为什么。
/*
标题:两表通过字段关联进行级联删除。
作者:爱新觉罗·毓华(十八年风雨,守得冰山雪莲花开)
时间:2008-11-20
地点:广东深圳
*/create table ta(id int not null)
create table tb(id int , aid int)
insert into ta values(1)
insert into ta values(2)
insert into tb values(1 , 1)
insert into tb values(2 , 2)
insert into tb values(3 , 1)
go--一、查看原始数据
--ta表的原始数据
select * from ta
/*
id
-----------
1
2
*/
--tb表的原始数据
select * from tb
/*
id aid
----------- -----------
1 1
2 2
3 1
*/--二、看看没有创建级联删除时的情况(删除ta表id=1的数据,看看是否影响tb表)
delete from ta where id = 1
select * from ta
/*
id
-----------
2
*/
select * from tb
/*
id aid
----------- -----------
1 1
2 2
3 1
*/--三、恢复原始数据,创建级联删除,删除ta表id=1的数据,看看是否影响tb表
insert into ta values(1)
--为ta创建主健
alter table ta add constraint pk_ta_id primary key (id)
go
--为tb创建外健,并指定级联删除
alter table tb add constraint fk_tb_aid foreign key (aid) references ta(id) on delete cascade
go
delete from ta where id = 1
select * from ta
/*
id
-----------
2
*/
select * from tb
/*
id aid
----------- -----------
2 2
*/--删除级联约束
alter table tb drop constraint fk_tb_aid
go
--删除测试表
drop table ta , tb
go