我想,当我的表中的数据变化做一些计算。 不过,我手动更新我的表,并复制粘贴一次约3000行。 这使我的工作触发3000次,但我希望它做的触发一次。
有没有办法做到这一点 ?
谢谢。
我想,当我的表中的数据变化做一些计算。 不过,我手动更新我的表,并复制粘贴一次约3000行。 这使我的工作触发3000次,但我希望它做的触发一次。
有没有办法做到这一点 ?
谢谢。
如果通过“手动”你的意思是你要复制并粘贴到一些用户界面工具(如访问的数据网格)或类似的东西,则该工具可能会发行每行一个INSERT语句,并且在这种情况下,你的运气了的数据库触发器将每一次插入语句执行。 至于其他的答案已经提到的,如果你可以直接插入行到数据库中,使用单个INSERT语句,则触发才会触发一次。
什么是你的理由?
如果你有多个插件 ,然后将火您正在运行的每个插件。 如果你想让它多刀片只执行一次,您必须:
insert into foo select * from bar
其他的可能性是:
因为你是手工粘贴的3000行的问题引起的。 你真的有2个解决方案。 你可以这样做关闭触发:
ALTER TABLE tablename DISABLE TRIGGER ALL
-- do work here
ALTER TABLE tablename ENABLE TRIGGER ALL
然后在运行触发的内容然后结束或者你可以把你的3000列到一个临时表,然后一次插入它们。 这将只设置1个触发。 如果这还不够,请给我们你正在尝试做的更多信息。
如果你是在一个单独的语句修改3000行,您的触发不会闪光3000次。 您的触发条件会一次,都会有你的虚拟“删除的”表3000行。
如果你在你如何将数据导入到每行确实单个插入受系统限制的,我建议你将数据导入到一个中间表,然后做插入到从中间一个决赛桌。