sql >> Base de Datos >  >> RDS >> Sqlserver

INSERTAR valores eliminados en una tabla antes de ELIMINAR con un DISPARADOR DE ELIMINACIÓN

Su problema es:este activador se dispara DESPUÉS la eliminación ya ha ocurrido . Entonces no hay más filas en HashTags ¡a la que podrías unirte!

Debe usar este disparador en su lugar:

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

El Deleted la pseudo tabla contiene las filas completas que fueron eliminados - no es necesario unirse a nada...

Además:este activador se activa después de que se haya eliminado, por lo que no necesita hacer nada usted mismo, dentro del activador, simplemente inserte esos bits de información en su tabla de archivo, eso es todo. Todo lo demás lo maneja SQL Server por usted.