2017-10-20 1 views
-1

Am mit zwei Tischen wie Studenten und StudentHistory in SQL Server, wenn eine Änderung der Studenten Tabelle passieren, dass Auslöser sollte StudentHistory Tabelle aktualisieren.Wie führe ich einen TRIGGER in MSSQl aus?

Tables:

CREATE TABLE Student (
    Id int, 
    Name varchar(20), 
    Dept varchar(10), 
    Age int, 
    Cratedby int, 
    CreatedTime datetime, 
    Modeifideby int, 
    ModifiedTime datetime, 
    Flag varchar(5) 
) 

History-Tabelle,

CREATE TABLE StudentHistory (
    Id int, 
    Actiontaken varchar(50), 
    ActionTime dateTime, 
    Cratedby int, 
) 

Trigger

CREATE TRIGGER wsrd.tr_Student on 
wsrd.Student 
AFTER INSERT 
AS 

insert into wsrd.StudentHistory 
      (Actiontaken,ActionTime,Cratedby) 
    (SELECT concat('Inserted-',i.id),i.CreatedTime,i.Cratedby from wsrd.Student s, inserted i where s.id=i.Id); 
GO 

Die Bedingung ist,

  1. Trigger sollte nur ausgeführt werden, wenn Spalte Modifideby, ModifiedTime und Flag in der Student-Tabelle eingefügt wird.
    1. Wenn ID, Name, Abteilung, Alter, CreatedTime und Flag eingefügt sind, bedeutet dies, dass der Trigger nicht ausgeführt werden soll.

Wie kann dies erreicht werden?

+2

MySQL oder SQL Server? – user8527410

+0

eingefügt oder aktualisiert? Oder beides? Was ist mit gelöscht? – HoneyBadger

+2

Hausaufgaben, und Sie möchten, dass wir es für Sie tun ... Zeigen Sie uns zumindest Ihren aktuellen Codeversuch. – jarlh

Antwort

0
CREATE TRIGGER trStudent 
ON dbo.[Student] 
FOR INSERT 
AS 
BEGIN 
    INSERT INTO dbo.[StudentHistory] 
     (Id, Actiontaken, ActionTime, Cratedby) 
    SELECT i.Id, i.Flag , i.CreatedTime, i.Cratedby 
    FROM inserted i 
    WHERE (i.Modeifideby > '' OR i.ModifiedTime > '01-01-1900' or i.Flag > '') 
END 
+2

'<> NULL' ... Funktioniert das wirklich? – jarlh

+0

Danke. Überprüfen>> ist der richtige Weg, um dies zu erreichen – Karthik

+0

Oder vielleicht 'IS NOT NULL'? – jarlh

Verwandte Themen