使用SSMS 2008.
我有两张桌子:
TABLE1:
PKField (Primary Key)
Field2
Field3
TABLE2:
PKField (Primary Key)
FKField (Foreign Key to Table1.PKField)
Field2
Field3
我需要在TABLE2上创建一个触发器:
每当行INSERTED进入TABLE2(此时Field2和Field3将始终为null),然后根据 TABLE1.Field2和TABLE2.Field3值更新字段TABLE2.Field2和TABLE2.Field3 。
使用SSMS 2008我该怎么做?我是触发器等的新手......
谢谢!
答案 0 :(得分:1)
以下是基于示例表格的粗略草图。
create trigger MyTrigger on Tabel2 INSTEAD OF INSERT AS
Insert Table2 (PKField, FKField, Field2, Field3)
select i.PKField
, i.FKField
, t.Field2
, t.Field3
from Inserted i
join Table1 t on t.PKField = i.FKField
答案 1 :(得分:0)
Here您可以找到更多信息触发器。我建议你在开始做任何事之前先阅读它。
在您的情况下,我相信您应该创建INSTEAD OF INSERT
触发器:
INSTEAD OF
指定执行DML触发器而不是触发SQL语句, 因此,重写触发语句的动作。 无法为DDL或登录触发器指定INSTEAD OF。最多一个 每个INSERT,UPDATE或DELETE语句的INSTEAD OF触发器都可以 在表格或视图上定义。
例如:
--Create an INSTEAD OF INSERT trigger on the view.
CREATE TRIGGER myTrigger on myTable
INSTEAD OF INSERT
AS
BEGIN
-- do whatever you want here
-- the code is executed when an insertion is made on the underlying table
END;
GO
您可以找到有关INSTEAD OF INSERT
触发器here的更多信息。
我想你唯一的问题是如何引用最初插入基础表的数据?
答案是使用inserted
表格 - read more about it