sql >> Databáze >  >> RDS >> Sqlserver

Vytvořte spouštěč pro vložení hodnoty sloupce do jiného sloupce stejné tabulky SQL Server 2005

Vyzkoušejte tento spouštěč (zkopíruje hodnoty z ColumnB do ColumnA, když jsou vloženy hodnoty do ColumnB nebo když jsou aktualizovány hodnoty z 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

Použil jsem tuto tabulku:

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. Změna pořadí záznamů z frontendu

  2. NonUniqueObjectException, když objekt přetrvává

  3. Doktrína - Přidejte výchozí časové razítko do entity, jako je NOW()

  4. OracleDataSource vs. Oracle UCP PoolDataSource