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

INDSÆT slettede værdier i en tabel før DELETE med en DELETE TRIGGER

Dit problem er:denne trigger udløses EFTER sletningen er allerede sket . Så der er ikke flere rækker i HashTags som du kunne være med på!

Du skal bruge denne trigger i stedet:

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 pseudo-tabel indeholder hele række(r) der blev slettet - ingen grund til at deltage i noget...

Også:denne udløser udløses efter sletningen er sket - så du behøver ikke at gøre noget selv, inde i udløseren - indsæt bare de informationer i din arkivtabel - det er alt. Alt andet håndteres af SQL Server for dig.




  1. Deltag i borde fra to forskellige servere

  2. Oracle-fejl ved opstart, endnu en opstarts-/nedlukningsoperation af denne instans i gang

  3. MySQL tilfældig resultatgruppe efter bestilling efter

  4. Oracle WITH og MATERIALISE tip fungerer som autonom transaktion for funktioner