我相信这是可能的,但对于我的生活,我无法弄清楚。
我创建的是一个用户历史 MSSQL 表,用于保存对用户和由谁所做的更改。此表包含两个引用我的另一个表(用户)的外键 - 一个 fkey 用于受影响的用户,另一个 fkey 用于进行更改的用户。
我需要的是对(用户)表的任何更改以级联和更新这个新表中的相应条目。
新表(User_History)中的字段如下(每个用户由两个字段标识):
Affected_User_House_Id - int
Affected_User_Id - int
Modified_By_User_House_Id - int
Modified_By_User_Id – int
Modification_Date - datetime
ModificationMade - ntext
除了“ModificationMade”之外,每个字段都是一个主键。“Modification_Date”字段精确到 1 秒。我遇到的问题是创建所述级联。我尝试运行以下 T-SQL 代码:
ALTER TABLE [User_History] WITH CHECK
ADD CONSTRAINT [FK_User_History_User] FOREIGN KEY([Affected_User_House_Id], [Affected_User_Id])
REFERENCES [User] ([User_House_Id], [User_ID])
ON UPDATE CASCADE
GO
ALTER TABLE [User_History] CHECK CONSTRAINT [FK_User_History_User]
GO
ALTER TABLE [User_History] WITH CHECK
ADD CONSTRAINT [FK_User_History_User_ModifiedBy] FOREIGN KEY([Modified_By_User_House_Id], [Modified_By_User_Id])
REFERENCES [User] ([User_House_Id], [User_ID])
ON UPDATE CASCADE
GO
ALTER TABLE [User_History] CHECK CONSTRAINT [FK_User_History_User_ModifiedBy]
GO
这个 T-SQL 给了我以下错误:
*'User' table saved successfully
'User_History' table
- Unable to create relationship 'FK_User_History_User_ModifiedBy'.
Introducing FOREIGN KEY constraint 'FK_User_History_User_ModifiedBy' on table 'User_History' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint. See previous errors.*
如果我删除第二个“ON UPDATE CASCADE”,则代码可以工作,但这意味着“Modified_By_User_House_Id”和“Modified_By_User_Id”字段中的值将不会更新以匹配它们在用户表中的引用值。
我不知道如何实现这个目标。