sql >> Database >  >> RDS >> Sqlserver

Maak een trigger die waarden invoegt in een nieuwe tabel wanneer een kolom wordt bijgewerkt

Zoiets zou moeten doen wat je nodig hebt. Je zou de INSERT . hebben onderstaande instructies voegt waarden in die de uitgevoerde bewerking aangeven in 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

Als je wilt, kun je ook kolommen toevoegen uit INSERTED en DELETED ook naar uw logtabel als u de werkelijke kolomwaarden wilt vastleggen die zijn ingevoegd of bijgewerkt.



  1. Verbeter de afstemming van SQL Server-prestaties met deze 3 tips

  2. fout bij het invoegen in mysql vanuit python for loop

  3. Hoe Atand() werkt in PostgreSQL

  4. Oracle kopieert rijen naar dezelfde tabel met verschillende datums