Как написать триггер для вставки и обновления другой таблицы - PullRequest
1 голос
/ 03 ноября 2011

Я хочу написать триггер. Когда в table1 есть запись, table2 должен быть вставлен с теми же значениями. А в каком-то поле в table1 обновляется, тогда соответствующее поле должно обновляться в table2. Как я могу узнать, добавлено ли значение или обновлено?

Я использую вставленный для вставки значения.

Пожалуйста, ведите меня.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2011

используйте этот триггер, чтобы решить вашу проблему .. создать TRIGGER [dbo]. [insert_Assets_Tran]
ON [dbo]. [AssetMaster]
ПОСЛЕ ВСТАВКИ, ОБНОВЛЕНИЕ
КАК НАЧАТЬ
ОБЪЯВИТЬ @isnum TINYINT;

SELECT @isnum = COUNT (*) ОТ вставлено;

IF (@isnum = 1)
INSERT INTO AssetTransaction
выберите [AssetId], [Brandname], [SrNo], [Modelno], [Processor], [Ram], [Hdd], [Display], [Os], [Office], [Purchaseagedt] , [Expirydt], [Производитель], [VendorAMC], [Имя типа], [LocationName], [EmpId], [CreatedBy], [CreatedOn], [ModifiedBy] , [ModifiedOn], [Примечание], [AssetStatus], [Категория], [Oylstartdt], [Oylenddt], [Конфигурация] [AStatus], [Tassign]

ОТ вставлено;
ELSE
RAISERROR («некоторые поля не поставляются», 16, 1)
С SETERROR;
END

0 голосов
/ 03 ноября 2011

Вот как вы узнаете, будет ли значение вставлено или обновлено в триггере, например:

  • в INSERT, динамическая таблица inserted заполняется новыми значениями
  • в UPDATE, динамическая таблица inserted заполняется новыми значениями обновленных записей, а динамическая таблица deleted объединяется со старыми значениями обновленных записей

Таким образом, в принципе, если таблица deleted содержит идентификатор (при условии, что у вас есть столбец идентификатора), как в таблице inserted, вы можете быть уверены, что это был UPDATE, который вызвал триггер.Если таблица deleted пуста, наоборот, это была INSERT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...