Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

CHÈN các giá trị đã xóa vào bảng trước khi XÓA bằng BỘ TRÍCH DẪN XÓA

Vấn đề của bạn là:trình kích hoạt này kích hoạt SAU KHI việc xóa đã xảy ra . Vì vậy, không còn hàng nào trong HashTags mà bạn có thể tham gia!

Bạn cần sử dụng trình kích hoạt này để thay thế:

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 bảng giả chứa (các) hàng toàn bộ đã bị xóa - không cần tham gia vào bất kỳ thứ gì ...

Ngoài ra:trình kích hoạt này kích hoạt sau khi quá trình xóa xảy ra - vì vậy bạn không cần phải tự làm bất cứ điều gì, bên trong trình kích hoạt - chỉ cần chèn các bit thông tin đó vào bảng lưu trữ của bạn - vậy thôi. Mọi thứ khác do SQL Server xử lý cho bạn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL - chọn các bản ghi riêng biệt trong một trường với các bản ghi cao nhất từ ​​trường khác

  2. Mã hóa dữ liệu minh bạch (TDE) trong SQL Server trong một nhóm luôn sẵn sàng trên ví dụ

  3. sql chọn 3 cột và loại trừ trên hai cột

  4. nvarchar (max) vẫn bị cắt bớt

  5. Làm cách nào để chọn bản ghi cuối cùng của một bảng trong SQL?