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

Tạo trình kích hoạt để chèn giá trị cột vào cột khác của cùng một bảng SQL Server 2005

Hãy thử trình kích hoạt này (nó sẽ sao chép các giá trị từ ColumnB sang ColumnA khi các giá trị được chèn vào ColumnB hoặc khi được cập nhật các giá trị từ ColumbB):

CREATE TRIGGER trgIU_triggertestTable_UpdateColumnAWhenColumnB
   ON  dbo.triggertestTable
   AFTER INSERT,UPDATE
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    IF UPDATE(ColumnB)
    BEGIN
        UPDATE  dbo.triggertestTable
        SET     ColumnA=i.ColumnB
        FROM    inserted i
        INNER JOIN dbo.triggertestTable t ON i.MyID=t.MyID
        LEFT JOIN deleted d ON i.MyID=d.MyID
        WHERE   d.MyID IS NULL AND i.ColumnB IS NOT NULL -- Row was inserted
        OR      d.MyID IS NOT NULL -- Row was updated
    END
END
GO

Tôi đã sử dụng bảng này:

CREATE TABLE dbo.triggertestTable(
    MyID INT IDENTITY(1,1) PRIMARY KEY, -- MyID should be a PRIMARY KEY or a mandatory(NOT NULL) UNIQUE constraint
    ColumnA VARCHAR(100),
    ColumnB VARCHAR(100)
);
GO


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao IsNull chậm gấp đôi so với liên kết (cùng một truy vấn)?

  2. Khắc phục “Ít nhất một trong các đối số đối với COALESCE phải là một biểu thức không phải là hằng số NULL” trong SQL Server

  3. Cách tạo tiện ích mở rộng cho SSMS 2019 (v18)

  4. JSON trong SQL Server

  5. MSSQL2008 - Pyodbc - SQL trước đây không phải là một truy vấn