2016-09-05 3 views
1

Как выполнить мой триггер после импорта данных до MYTABLE?Как запустить триггер после импорта?

CREATE TRIGGER trigger_class_id 
ON MYTABLE 
AFTER INSERT 
AS 
    UPDATE MYTABLE 
    SET CLASS_ID = SUBSTRING(CLASS_NAME, 1, 4) 

Я попытался импортировать с этим триггером, но мой CLASS_ID не заменяется 4 первого символа из CLASS_NAME

Но если я использую insert into ... он работает (мой триггер выполняется)

+0

Если 'CLASS_ID' поле всегда держит первые 4 символов 'CLASS_NAME', или он изменится позже? Если это всегда будут те буквы, вы можете использовать вычисляемый столбец. – BeanFrog

+0

Что вы подразумеваете под импортом? Этот триггер будет всегда запускаться, когда строка будет вставлена ​​в мою таблицу, поэтому, чтобы ответить на ваш вопрос, все, что вам нужно сделать для выполнения этого триггера, - это вставить строку в таблицу mytable – GuidoG

ответ

2

Операция массового импорта должна выполнять триггеры только для таблицы с триггерами INSERT и INSTEAD OF, которые поддерживают несколько вставок строк.

Если вы используете BCP команды для импорта, вы можете явно вызвать триггер с помощью спецификатору -h «FIRE_TRIGGERS»

Подробнее об этом Link

Там нет прямого варианта в мастере импорта импорта. Один из способов - сохранить пакет, созданный мастером экспорта импорта, а затем отредактировать пакет -> Перейти в расширенный редактор -> перейти к «FastLoadOptions» -> Установить флаг FIRE_TRIGGERS в true.

если вы первенствуете столбцы данных часто меняется, лучший вариант это пойти с команды BCP с классификатором -h «FIRE_TRIGGERS»

+0

спасибо @unnikrishnan, как применить -h "FIRE_TRIGGERS"? Я попытался бросить это на свой запрос триггера, но его не работает извините, я не понимаю, с артикулом на https://technet.microsoft.com/en-us/library/ms187640(v=sql.105). aspx спасибо ... – gufran

+0

Могу ли я использовать -h "FIRE_TRIGGERS", когда я импортирую свои данные с помощью мастера импорта и экспорта sql-сервера? – gufran

+0

Спасибо за ваше решение, но я до сих пор не понимаю, как использовать FIRE_TRIGGERS. я не могу найти 'packae -> Перейти к Расширенному редактору -> перейти в« FastLoadOptions »-> Установить флаг FIRE_TRIGGERS в true.' – gufran

0

Вы могли бы хотите использовать данные из вставленной строки.

Таким образом, ваш запрос будет выглядеть


Update MYTABLE SET class_id = SUBSTRING (i.CLASS_NAME, 1, 4) от вставлено I.


Надеюсь, что это поможет. :)

+0

. Я хочу, чтобы у каждого я получил новые данные (импорт из excel), данные на CLASS_ID заменить на 4 символа из class_name – gufran

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