Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 是否可以在SQL Server中使用更新级联实现自引用外键?_Sql Server_Tsql - Fatal编程技术网

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