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

Làm cách nào để chỉnh sửa các giá trị của một INSERT trong một trình kích hoạt trên SQL Server?

Sử dụng trình kích hoạt sau khi chèn. Tham gia từ inserted bảng giả thành Tb trên khóa chính. Sau đó cập nhật các giá trị của desc. Một cái gì đó như:(Nhưng có thể không biên dịch)

CREATE TRIGGER TbFixTb_Trg 
ON  Tb  
AFTER INSERT 
AS  
BEGIN 
    UPDATE Tb
    SET DESC = SomeTransformationOf(i.DESC)
    FROM Tb
    INNER JOIN inserted i on i.Id = Tb.Id
END  
GO

Kích hoạt này xảy ra sau khi quá trình chèn xảy ra, nhưng trước khi insert câu lệnh hoàn thành. Vì vậy, các giá trị mới, không chính xác đã được đặt trong bảng mục tiêu. Trình kích hoạt này sẽ không cần thay đổi khi các cột được thêm vào, bị xóa, v.v.

Cảnh báo trước Các ràng buộc về tính toàn vẹn được thực thi trước khi kích hoạt sau khi kích hoạt. Vì vậy, bạn không thể đặt ràng buộc kiểm tra để thực thi dạng DESC thích hợp. Bởi vì điều đó sẽ khiến câu lệnh bị lỗi trước khi trình kích hoạt có cơ hội sửa chữa bất cứ điều gì. (Vui lòng kiểm tra lại đoạn này trước khi dựa vào nó. Đã lâu rồi tôi chưa viết đoạn kích hoạt.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giao dịch ngoại lệ ném ngoại lệ nền tảng này không hỗ trợ các giao dịch phân tán trong khi mở đối tượng kết nối

  2. Danh sách các loại dữ liệu trong SQL Server 2017

  3. Cách tốt nhất để tự động tạo câu lệnh INSERT cho bảng SQL Server là gì?

  4. Sử dụng INNER JOIN để kết hợp các bảng của máy chủ SQL và hiển thị chúng trong ASP.NET Webforms

  5. Các tháng giữa hai ngày