Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Erstellen Sie einen Trigger, der Werte in eine neue Tabelle einfügt, wenn eine Spalte aktualisiert wird

So etwas sollte tun, was Sie brauchen. Sie hätten den INSERT Anweisungen unten fügen Werte ein, die die durchgeführte Operation in MyLogTable angeben .

CREATE TRIGGER [dbo].[TRIG_MyTable]
ON [dbo].[MyTable]
AFTER INSERT, UPDATE

AS 

DECLARE @INS int, @DEL int

SELECT @INS = COUNT(*) FROM INSERTED
SELECT @DEL = COUNT(*) FROM DELETED

IF @INS > 0 AND @DEL > 0 
BEGIN

    -- a record got updated, so log accordingly.

    INSERT INTO MyLogTable
    SELECT 'New Values', getdate() FROM INSERTED

    INSERT INTO MyLogTable
    SELECT 'Old Values', getdate() FROM DELETED

END

ELSE 
BEGIN

    -- a new record was inserted.

    INSERT INTO MyLogTable
    SELECT 'Insert', getdate() FROM INSERTED

END

Wenn Sie möchten, können Sie auch Spalten aus INSERTED hinzufügen und DELETED auch in Ihre Protokolltabelle, wenn Sie die tatsächlichen Spaltenwerte erfassen möchten, die eingefügt oder aktualisiert wurden.