Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Utwórz wyzwalacz, aby wstawić wartość kolumny do innej kolumny tej samej tabeli SQL Server 2005

Wypróbuj ten wyzwalacz (skopiuje wartości z KolumnyB do KolumnyA, gdy zostaną wstawione wartości do KolumnyB lub gdy zostaną zaktualizowane wartości z KolumnyB):

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

Użyłem tej tabeli:

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. SQL Server 2005 Usuń zapytanie SLOW

  2. SQL Server:wiele indeksów dla tej samej wydajności kolumn

  3. Nie można ukończyć procesu logowania z powodu opóźnienia w otwieraniu połączenia z serwerem w azure Db przy użyciu ssis

  4. Instrukcja Return Select jako sformatowany HTML (SQL 2005)

  5. Najbardziej wydajna metoda wykrywania zmian kolumn w MS SQL Server