首页 文章

触发器:使用table1中的信息更新table2

提问于
浏览
0

使用SSMS 2008 .

我有2张 table :

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我该怎么做?我是触发器的新手......

谢谢!

2 回答

  • 0

    这是基于示例表的粗略草图 .

    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

    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 trigger here的更多信息 .

    我想你唯一的问题是如何引用最初插入基础表中的数据?

    答案是使用 inserted 表 - read more about it

相关问题