0

我有两张桌子:

  • table1staffid
  • table2staffid

我希望 table2staffid等于 table1staffid

当对表 1 员工 ID 进行更改时,他们需要更改表 2 中的员工 ID

我该怎么做呢?

4

3 回答 3

1

由于您的第一个要求是 table2 staffid 应该等于 table1 Staffid,您可以将 table2 员工 ID 的外键约束定义为:

ALTER TABLE table2 WITH NOCHECK
ADD CONSTRAINT FK_staffid
FOREIGN KEY(staffid)
REFERENCES table1(staffid)
ON UPDATE CASCADE

外键选项“With check”指定外键表 [即 Table2] 中的任何现有数据都应经过验证以符合约束,而“WITH NOCHECK”设置指定现有数据不经过验证以符合新约束。这当您知道 Table2 中的所有现有数据都已经符合约束条件时,该选项可以使创建过程更加高效,但在创建过程中将忽略任何不符合条件的记录。但是,在对不符合行的后续更新期间,将强制执行约束,从而导致错误。

第二个要求是对表 1 的人员 ID 所做的更改应该级联到表 2 中的人员 ID 'ON UPDATE CASCADE' 选项应该被使用。

于 2013-09-30T05:23:18.300 回答
1

在更新为 [dbo].[Table1] 后创建触发器 [dbo].[TestDb]

开始声明@staffID int SELECT staffID = staffID FROM INSERTED

-- 更新表 2 END

您可以使用 BEFORE UPDATE 或 AFTER UPDATE 触发器来完成您的任务

这是参考http://msdn.microsoft.com/en-us/library/ms189799.aspx

于 2013-09-30T05:07:03.917 回答
0

如果您希望它自动完成,则需要对table2 员工 ID使用ON UPDATE CASCADE 。

于 2013-09-30T05:02:12.303 回答