sql >> Database teknologi >  >> RDS >> Sqlserver

Opret en trigger, der indsætter værdier i en ny tabel, når en kolonne opdateres

Sådan noget burde gøre, hvad du har brug for. Du ville have INSERT sætninger nedenfor indsætter værdier, der angiver den udførte handling i MyLogTable .

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

Hvis du ville, kunne du også tilføje kolonner fra INSERTED og DELETED til din logtabel også, hvis du vil fange de faktiske kolonneværdier, der blev indsat eller opdateret.



  1. MySQL-forespørgsel - find nye brugere pr. dag

  2. Erstat null-værdi med tidligere tilgængelig værdi i Row SQL-serverforespørgsel

  3. Hvordan relaterer FRA-siden af ​​en OPDATERING til tabellen, der er målrettet for OPDATERING?

  4. Spring Boot Actuator/health endpoint viser ikke database- eller filsystemoplysninger