我有两张桌子:
table1
有staffid
table2
有staffid
我希望 table2staffid
等于 table1staffid
当对表 1 员工 ID 进行更改时,他们需要更改表 2 中的员工 ID
我该怎么做呢?
我有两张桌子:
table1
有staffid
table2
有staffid
我希望 table2staffid
等于 table1staffid
当对表 1 员工 ID 进行更改时,他们需要更改表 2 中的员工 ID
我该怎么做呢?
由于您的第一个要求是 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' 选项应该被使用。
在更新为 [dbo].[Table1] 后创建触发器 [dbo].[TestDb]
开始声明@staffID int SELECT staffID = staffID FROM INSERTED
-- 更新表 2 END
您可以使用 BEFORE UPDATE 或 AFTER UPDATE 触发器来完成您的任务
如果您希望它自动完成,则需要对table2 员工 ID使用ON UPDATE CASCADE 。