Trigger: Update table2 mit Info aus table1

Mit SSMS 2008 nutzen

Ich habe 2 Tische:

TABLE1: PKField (Primary Key) Field2 Field3 TABLE2: PKField (Primary Key) FKField (Foreign Key to Table1.PKField) Field2 Field3 

Ich muss einen Trigger auf TABLE2 erstellen, der das tut:

Immer wenn Zeilen in TABLE2 eingefügt werden (Field2 und Field3 sind an dieser Stelle immer null), dann UPDATE die Felder TABLE2.Field2 und TABLE2.Field3 basierend auf TABLE1.Field2 und TABLE2.Field3 Werte.

Mit SSMS 2008 wie mache ich das? Ich bin neu zu trigger, etc …

Vielen Dank!

Hier ist eine grobe Skizze, die auf Ihren Beispieltabellen basiert.

 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 

Hier finden Sie weitere Informationen Trigger. Ich empfehle Ihnen, es zuerst zu lesen, bevor Sie etwas anfangen.

In deinem Fall glaube ich, dass du INSTEAD OF INSERT Trigger erstellen solltest:

ANSTATT VON

Gibt an, dass der DML-Trigger anstelle der auslösenden SQL-statement ausgeführt wird, wodurch die Aktionen der auslösenden statementen überschrieben werden. INSTEAD OF kann nicht für DDL- oder Anmelde-Trigger angegeben werden. Höchstens kann ein INSTEAD OF Trigger pro INSERT, UPDATE oder DELETE-statement in einer Tabelle oder Sicht definiert werden.

Beispielsweise:

 --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 

Weitere Informationen zum INSTEAD OF INSERT hier .

Ich denke, die einzige Frage, die Sie haben, ist, wie man die data, die anfänglich in die zugrunde liegende Tabelle eingefügt wird verweisen?

Die Antwort ist die inserted Tabelle – lesen Sie mehr darüber