sql >> Database >  >> RDS >> Sqlserver

INSERT verwijderde waarden in een tabel vóór DELETE met een DELETE TRIGGER

Uw probleem is:deze trigger wordt NA het verwijderen is al gebeurd . Er is dus geen rij meer in HashTags waaraan je zou kunnen deelnemen!

U moet in plaats daarvan deze trigger gebruiken:

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

De Deleted pseudo-tabel bevat de hele rij(en) die zijn verwijderd - je hoeft nergens aan mee te doen...

Ook:deze trigger wordt geactiveerd nadat de verwijdering heeft plaatsgevonden - u hoeft dus niets zelf te doen, binnen de trigger - voeg gewoon die stukjes informatie toe aan uw archieftabel - dat is alles. Al het andere wordt voor u afgehandeld door SQL Server.




  1. Dezelfde subquery meerdere keren gebruikt in een enkele query

  2. Een postgres-tabel volledig kopiëren met SQL

  3. Records dupliceren / kopiëren in dezelfde MySQL-tabel

  4. Postgresql CASE-instructie - kan ik de retourwaarde van de CASE in mijn SELECT gebruiken?