2015-04-29 2 views
0

мне нужно написать SQL Transact триггер, выполнить простую задачу, если INSERT называется, но только если INSERT изменить таблицу t (так что если INSERT INTO t (...) VALUES (...)SQL Transact - триггер на INSERT в конкретной таблице

. Я использую if (UPDATE[col]) в триггер для выполнения задачи, но самозабвенно, не вызовов при создании строки, и мне нужно, чтобы управлять этим делом тоже.

Я видел EVENT_DATE и AFTER INSERT, но я не знать, как его выполнять, только если INSERT работает в конкретной таблице t.

Могу ли я привести пример, как это сделать?

Это псевдо-код:

IF (new row is insert on T) OR (T.c is updated) 
{ 
My task 
} 

ответ

0

С ручной https://msdn.microsoft.com/en-GB/library/ms189799.aspx

-- SQL Server Syntax 
Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger) 

CREATE TRIGGER [ schema_name . ]trigger_name 
ON { table | view } 
[ WITH <dml_trigger_option> [ ,...n ] ] 
{ FOR | AFTER | INSTEAD OF } 
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } 
[ WITH APPEND ] 
[ NOT FOR REPLICATION ] 
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > } 

так что вам нужно что-то вроде

create trigger mytrigger 
on mytable 
for insert, update 
as 
    // stuff to do 

или если вы хотите написать обновления и вставки отдельно

create trigger mytrigger_update 
on mytable 
for update 
as 
    // stuff to do for update 


create trigger mytrigger_insert 
on mytable 
for insert 
as 
    // stuff to do for insert 
+0

Совершенная, я не видел «ON» clausole. Спасибо – TheDeveloper

+0

и убедитесь, что ваш action staement предполагает включение или обновление нескольких записей inteh. Никогда не пишите триггер SQL-сервера с предположением, что в пакете будет только одна запись. Проверьте, будет ли она вставляться в несколько записей, а также обновлять запись в multipe. – HLGEM

0
CREATE TRIGGER [ schema_name. ]trigger_name 
ON T 
AFTER INSERT 
AS { 
your statement here 
} 

Этот оператор создает Тригер с именем TRIGGER_NAME по таблице Т, будет срабатывать после вставки на этой таблице

+0

, так как имя вашей таблицы T, имя схемы необязательно –

+0

Вам следует добавить объяснение в свой ответ. – deW1

Смежные вопросы