Ich werde einen Trigger für das Update erstellen. Zweck dieses Triggers ist, dass wenn Muadurum Spalte geändert wird, nehmen Sie den alten Wert von mua_tarih in Tabelle fkayitlar und fügen Sie zu einer anderen Tabelle mua_tarihleri .MSSQL Trigger für Update funktioniert nur einmal
Mein Codeblock wie;
ALTER TRIGGER [dbo].[trgr_fkayit_update]
ON [dbo].[fkayitlar]
AFTER UPDATE
AS
DECLARE @mua_durum_once NVARCHAR(10)
DECLARE @mua_durum_sonra NVARCHAR(10)
DECLARE @mua_tarih_once DATE
DECLARE @mua_yapan_once NVARCHAR(25)
DECLARE @kisi_id INT
Nehmen Sie den alten Wert;
SELECT
@kisi_id=kayitid,
@mua_durum_once=muayenedurum,
@mua_tarih_once=muayenetarih,
@mua_yapan_once=mua_yapan
FROM deleted
Nehmen Sie den neuen Wert;
SELECT @mua_durum_sonra=muayenedurum FROM inserted
Überprüfen, ob der Wert geändert wurde; wenn geändert, Legen @mua_tarih Tabelle mua_tarihleri mit @kisi_id und @mua_yapan_once
IF @mua_durum_once='OLDU'
AND @mua_durum_sonra='OLMADI'
AND @mua_tarih_once IS NOT NULL
BEGIN
INSERT INTO mua_tarihleri(kayitid,mua_tarihi,mua_yapan)
VALUES(@kisi_id,@mua_tarih_once,@mua_yapan_once)
END
Mein Problem ist, wenn ich mehr als eine Zeile in der Tabelle fkayitlar aktualisieren, wird Trigger-Arbeit, aber ich sehe nur eine eingefügte Reihe in der Tabelle mua_tarihleri (funktioniert nur einmal). Ich muss mehr als einen sehen (sollte mehr als einmal funktionieren) Sind Trigger nicht an mehr als einem Prozess beteiligt? oder Wie kann ich das mein Problem lösen?
Der Auslöser nur einmal auftritt, wenn die Tabelle aktualisiert wird, unabhängig davon, wie viele Zeilen aktualisiert werden. Daher müssen Sie Ihren Trigger-Body so schreiben, dass er in einer Reihe von Zeilen arbeitet, nicht in einer Zeile, wie Sie es getan haben. –
"deleted" ist eine virtuelle Tabelle, d. H. Kann mehrere Zeilen enthalten. Eine einzelne Löschanweisung, die drei Zeilen löscht, führt dazu, dass die "gelöschte" Tabelle in einem Auslöser drei Zeilen hat. Berücksichtigen Sie dies und Sie sollten gut sein. –
@ ƉiamondǤeezeƦ ** AKTUALISIEREN fkayitlar SET muayenedurum = 'OLMADI', muayenetarih = NULL WHERE GETDATE()> periyodiktarih ** Wenn ich diese Abfrage ausführe, wird mehr als eine Zeile bewirkt, und alle müssen in die Tabelle eingefügt werden ** mua_tarihleri * * aber es kann nicht funktionieren :( – BozkurtFuat