sql >> Database >  >> RDS >> Sqlserver

Maak een trigger om een ​​kolomwaarde in te voegen in een andere kolom van dezelfde tabel SQL Server 2005

Probeer deze trigger (het kopieert de waarden van KolomB naar KolomA wanneer waarden worden ingevoegd in KolomB of wanneer de waarden van ColumbB worden bijgewerkt):

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

Ik heb deze tabel gebruikt:

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. Hoe het maandnummer uit de datum in Oracle te halen

  2. Preventietriggers

  3. Een complexe MySQL-query schrijven

  4. Rijsloten - handmatig gebruiken