2013-07-10 4 views
0

Здравствуйте, у меня есть некоторые трудности с простым триггером в MSSQL 2008.Trigger insert deleted row

Я хочу вставить удаленную строку в другую таблицу.

Вот мой триггер код:

use databasex; 
GO 
CREATE TRIGGER DeleteEmployee 
ON Employees 
FOR DELETE 
AS 
BEGIN 
    INSERT INTO DeletedEmployees (Name, Surname, Function) 
    VALUES (deleted.Name, deleted.Surname, deleted.Function) 
END 

Сотрудники таблице:

Name Surname Function ... 

DeletedEmployees стол:

Name Surname Function ... 

мне нужно как-то указать, что удаленные столбцы из удаленной таблицы, но как ?

Я не хочу писать подзапросы для каждого столбца.

Как это делается?

ps: есть ли хороший учебник по использованию триггеров? Я считаю, что мне нужно будет написать больше триггеров в будущем.

ответ

2

DELETED это виртуальная таблица выбора из (вы, возможно, удалены более одной строки, поэтому одно значение не достаточно)

Кроме того, FUNCTION зарезервированное слово и должно быть экранированы

CREATE TRIGGER DeleteEmployee 
ON Employees 
FOR DELETE 
AS 
BEGIN 
    INSERT INTO DeletedEmployees (Name, Surname, [Function]) 
     SELECT Name, Surname, [Function] FROM deleted 
END 

An SQLfiddle to test with.

+1

wow спасибо :-) – Muflix