2013-09-30 66 views

回答

0

如果你希望它是自动完成的,你需要使用ON UPDATE CASCADE为表2,STAFFID。

+2

或者每次更新table1后触发的触发器 –

+0

是的,这也应该起作用。 +1 –

1

CREATE TRIGGER [DBO] [TESTDB] ON [DBO] [表1] UPDATE AS

之后开始 DECLARE @staffID INT SELECT = STAFFID STAFFID FROM INSERTED

- 。DO在表2 END东西更新

才可以使用UPDATE或AFTER UPDATE触发器来实现你的任务

下面是引用http://msdn.microsoft.com/en-us/library/ms189799.aspx

+0

欢迎使用StackOverflow:如果您发布代码,XML或数据样本,请**在文本编辑器中高亮显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(“{}”)格式和语法突出显示它! –

1

作为你的第一个要求是表2,STAFFID应该是平等的表1 STAFFID是,你可以对表2的工作人员用ID定义外键约束为:

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

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

第二个要求是对table1的staffid应该级联到table2中的staffid所做的更改应该使用“ON UPDATE CASCADE”选项。