Xkeymacs делает действительно хорошее задание этого. Возможно настроить этот инструмент для каждого приложения, работающего на Вашем рабочем столе.
Не знаю, чего вы действительно хотите достичь, но в SQL Server у вас есть два типа триггеров:
SQL Server не имеет триггеров BEFORE INSERT / UPDATE / DELETE, которые есть в других СУБД.
Вы можете использовать любые количество триггеров AFTER, но только один триггер INSTEAD OF для каждой операции (INSERT, UPDATE, DELETE).
Более распространенным случаем является триггер AFTER, что-то вроде:
CREATE TRIGGER trgCheckInsertedValues
ON status_master
AFTER INSERT
AS
BEGIN
INSERT INTO dbo.temp(field1, field2, field3)
SELECT i.Name, i.Status
FROM inserted i
WHERE i.Status = 'FAIL'
END
Здесь я проверяю "вставленный" псевдо -таблица, которая содержит все строки, вставленные в вашу таблицу, и для каждой строки, содержащей «status = FAIL», вы должны вставить некоторые поля во «временную» таблицу.
Опять же - не уверен, что вы действительно хотите в деталях, - но это будет грубый набросок того, как это сделать в коде T-SQL SQL Server.
Марк
Вам нужен триггер INSTEAD OF INSERT, UPDATE. В своем триггере вы пытаетесь вставить или обновить себя внутри try-catch. Если возникает ошибка, вы вставляете эти значения в другую таблицу (при условии, что это какая-то таблица журналов).
Предполагая, что вы имеете в виду, если новое значение статуса будет FAIL, то что насчет этого:
триггеры ссылаются на новую строку записи как на «вставленную», а на старую как на «удаленную»
СОЗДАТЬ ТРИГГЕР trgCheckInsertedValues НА status_master ПОСЛЕ ВСТАВИТЬ КАК
НАЧАТЬ
, если вставлено.status = 'FAIL'
ВСТАВИТЬ В dbo.temp (поле1, поле2, поле3)
ВЫБЕРИТЕ i.Name, i.Status, 'что-нибудь' ОТ, вставленное i