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

INSERT valori eliminati in una tabella prima di DELETE con un DELETE TRIGGER

Il tuo problema è:questo trigger si attiva DOPO l'eliminazione è già avvenuta . Quindi non ci sono più righe in HashTags a cui potresti unirti!

Devi invece utilizzare questo trigger:

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

Il Deleted pseudo tabella contiene le righe intere che sono stati eliminati - non c'è bisogno di partecipare a nulla...

Inoltre:questo trigger si attiva dopo che è avvenuta l'eliminazione, quindi non è necessario fare nulla da soli, all'interno del trigger:basta inserire quei bit di informazioni nella tabella di archivio - tutto qui. Tutto il resto è gestito da SQL Server per te.