欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约

程序员文章站 2022-03-22 23:28:57
错误提示:可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。 原因:自表连接(同一张表自己连接自己)不允许级联删除和级联更新。 一、sql语句 二、发现 内容如下: USE [Ecolo ......

错误提示:可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。

原因:自表连接(同一张表自己连接自己)不允许级联删除和级联更新。

一、sql语句

create table DataClass (
   CID                  nvarchar(6)          not null,
   ParentID             nvarchar(6)          null,
   CNAME                nvarchar(50)         not null,
   ENAME                nvarchar(50)         not null,
   DISCRIB              nvarchar(200)        null,
   DATATYPE             smallint             null,
   constraint PK_DATACLASS primary key (CID)
)
go

create unique index IX_DataClass on DataClass (
ENAME ASC
)
go

alter table DataClass
drop constraint FK_DataType_self
--报错:可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
--alter table DataClass
--   add constraint FK_DataType_self foreign key (ParentID)
--      references DataClass (CID)
--         on update cascade
--go

--改为:
alter table DataClass
   add constraint FK_DataType_self foreign key (ParentID)
      references DataClass (CID)
         on update NO ACTION
go

 

二、发现

on update NO ACTION 其实可以省略,因为默认有这种机制。

可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约

内容如下:

USE [Ecology]
GO

ALTER TABLE [dbo].[DataClass] WITH CHECK ADD CONSTRAINT [FK_DataType_self] FOREIGN KEY([ParentID])
REFERENCES [dbo].[DataClass] ([CID]) 
GO

ALTER TABLE [dbo].[DataClass] CHECK CONSTRAINT [FK_DataType_self]
GO

 

sqlserver自动省略了 on update NO ACTION


sql约束可以修改为:
alter table DataClass
   add constraint FK_DataType_self foreign key (ParentID)
      references DataClass (CID)
go

在PowderDesigner中,也不用设置。

可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约