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

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

Нещо подобно трябва да направи това, от което се нуждаете. Ще имате INSERT изрази по-долу вмъкват стойности, указващи извършената операция в MyLogTable .

CREATE TRIGGER [dbo].[TRIG_MyTable]
ON [dbo].[MyTable]
AFTER INSERT, UPDATE

AS 

DECLARE @INS int, @DEL int

SELECT @INS = COUNT(*) FROM INSERTED
SELECT @DEL = COUNT(*) FROM DELETED

IF @INS > 0 AND @DEL > 0 
BEGIN

    -- a record got updated, so log accordingly.

    INSERT INTO MyLogTable
    SELECT 'New Values', getdate() FROM INSERTED

    INSERT INTO MyLogTable
    SELECT 'Old Values', getdate() FROM DELETED

END

ELSE 
BEGIN

    -- a new record was inserted.

    INSERT INTO MyLogTable
    SELECT 'Insert', getdate() FROM INSERTED

END

Ако искате, можете също да добавите колони от INSERTED и DELETED към вашата журнална таблица, ако искате да заснемете действителните стойности на колони, които са били вмъкнати или актуализирани.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да покажа номер на страница в тялото на отчета на SSRS 2008 R2?

  2. SQL Server 2005 / 2008 - множество файлови групи?

  3. Функции, дефинирани от потребителя на SQL Server

  4. DATEADD() Примери в SQL Server

  5. единична заявка за изтриване от множество таблици в sql сървър