导入后如何执行触发器?

时间:2016-09-05 07:10:18

标签: sql sql-server

如何在将数据导入MYTABLE后执行触发器?

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

我尝试使用此触发器导入,但我的CLASS_ID未被CLASS_NAME中的4个第一个字符替换

但如果我使用insert into ...它正在工作(我的触发器已执行)

2 个答案:

答案 0 :(得分:2)

批量导入操作应仅对具有INSERT和INSTEAD OF触发器的表执行触发器,该触发器支持多行插入。

如果您使用 BCP 命令进行导入,则可以使用限定符 -h" FIRE_TRIGGERS"

显式调用触发器

详细了解Link

导入导出向导中没有直接选项。一种方法是您可以保存导入导出向导创建的包,然后编辑包装 - >转到高级编辑器 - >转到" FastLoadOptions" - >将FIRE_TRIGGERS标志设置为true。

如果excel数据列频繁变化,更好的选择是使用 BCP 命令,使用限定符 -h&#34; FIRE_TRIGGERS&#34; < /强>

答案 1 :(得分:0)

您可能希望使用插入行中的数据。

所以你的查询看起来像是

更新 MYTABLE 组   来自插入i的CLASS_ID = SUBSTRING(i.CLASS_NAME,1,4)

希望这会有所帮助。 :)