Sql server 是否可以在SQL Server中使用更新级联实现自引用外键?
我有这张桌子:Sql server 是否可以在SQL Server中使用更新级联实现自引用外键?,sql-server,tsql,Sql Server,Tsql,我有这张桌子: CREATE TABLE [SomeTable]( [Id] int NOT NULL ,[SomeColumn] varchar(50) NULL ,[ParentId] int NULL CONSTRAINT [PK_SomeTable] PRIMARY KEY CLUSTERED ([Id] ASC) ALTER TABLE [
CREATE TABLE [SomeTable](
[Id] int NOT NULL
,[SomeColumn] varchar(50) NULL
,[ParentId] int NULL CONSTRAINT [PK_SomeTable] PRIMARY KEY CLUSTERED ([Id] ASC)
ALTER TABLE [SomeTable] WITH CHECK ADD CONSTRAINT
[FK_SomeTable_SomeTable] FOREIGN KEY([ParentId])
REFERENCES [SomeTable] ([Id])
ALTER TABLE [SomeTable] CHECK CONSTRAINT [FK_SomeTable_SomeTable]
Sql Server不允许我将放在更新级联上
如果我更新
Id
column,所有子行ParentId
也会更新,有什么办法可以解决这个问题吗?我认为除了编写一个触发器(使用递归查询)之外,您无法绕过这个限制。一般来说,主键列应该是不可变的。在这种特殊情况下,甚至更多。解决问题的唯一方法是完全删除FK声明,并用代码(读:触发器)实现RI。。