2016-07-27 21 views
0

ich für Trigger nach Einsatz die Hilfe benötigen, füge ich alle Datenform Datagridview Ich möchte mit im Dienst spät Spalte füllen - Uhr, aber nachdem ich erstellt diesen TriggerSQL Server-Trigger, nachdem alle Daten einfügen Fehler einfügen null

create trigger insertlate 
on kkpsurabaya 
after insert 
as 
begin 
    declare @insertlate varchar(50) 
    set @insertlate = (SELECT DATEDIFF(MINUTE, clock_in ,on_duty) AS MinuteDiff 
         FROM kkpsurabaya) 

    insert into kkpsurabaya(Late) 
    values(@insertlate) 
end 

all data insert null

+0

was sollte dein 'insertlate' tun? Es scheint, dass Sie eine weitere Zeile in den Tisch 'kkpsurabaya' einfügen – Squirrel

Antwort

-1

Ihr aktueller Trigger fügt zusätzliche Zeilen in die Tabellen ein. Es sieht so aus, als ob Sie den Trigger verwenden möchten, um die Spalte Late zu aktualisieren. In diesem Fall sollten Sie Ihre Trigger sein die inserted Tabelle zu der Basistabelle verbinden und direkt

create trigger insertlate on kkpsurabaya 
after insert 
as 
begin 
    UPDATE  k 
    SET  Late = DATEDIFF(MINUTE, i.clock_in, i.on_duty) 
    FROM  inserted i 
    INNER JOIN kkpsurabaya k 
    ON   i.pk = k.pk 
end 

alternativ können die Late Spalte als berechnete Spalte erstellen aktualisieren.

+0

Dies ist nur 1 Tabelle verwenden Ich möchte, dass die späte Spalte Auto füllen und fügen Sie Uhr in und im Dienst. –

+0

was meinst du? Funktioniert der Auslöser für Sie? – Squirrel

+0

, dass keine Arbeit, nur Miss Klik. Ich meine, ich möchte Trigger in der gleichen Tabelle, die ich einfüge. –