sql >> Databasteknik >  >> RDS >> Sqlserver

INFOGA raderade värden i en tabell före DELETE med en DELETE TRIGGER

Ditt problem är:den här utlösaren aktiveras EFTER raderingen har redan skett . Så det finns ingen fler rad i HashTags som du kan vara med på!

Du måste använda denna utlösare istället:

ALTER TRIGGER [dbo].[HashTags_BeforeDelete]
    ON [dbo].[HashTags]
    FOR DELETE
AS
  BEGIN
    INSERT INTO HashTagsArchive(Id, HashTagId, delete_date)
       SELECT 
           d.Id, d.HashTagId, GETUTCDATE() 
       FROM deleted d 
  END
GO

Deleted pseudotabellen innehåller hela rad(er) som raderades - du behöver inte gå med på någonting...

Dessutom:den här utlösaren aktiveras efter att raderingen har skett - så du behöver inte göra något själv, inuti triggern - infoga bara de där informationsbitarna i din arkivtabell - det är allt. Allt annat hanteras av SQL Server åt dig.




  1. PostgreSQL:Automatisk ökning baserat på unik begränsning med flera kolumner

  2. Kan jag använda en ström för att INFOGA eller UPPDATERA en rad i SQL Server (C#)?

  3. CONTAINS fungerar inte med Oracle Text

  4. Migrerar till OpenJDK 11, vilken version av MySql-anslutningen är kompatibel för java 11?