Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Създайте тригер за вмъкване на стойност на колона в друга колона на същата таблица SQL Server 2005

Опитайте този тригер (той ще копира стойностите от ColumnB в ColumnA, когато се вмъкнат стойности в ColumnB или когато се актуализират стойностите от 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

Използвах тази таблица:

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. Как да извлека няколко колони за използване в цикъл на курсора?

  2. Изпълнете съхранена процедура като друго потребителско разрешение

  3. По-висок резултат от заявката с ключовата дума DISTINCT?

  4. Как програмно да експортирате csv файл въз основа на SQL заявка

  5. Импортирайте .txt файл в SQL Server 2008