mysql-每行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql-每行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1127字,纯文字阅读大概需要2分钟。
内容图文
![mysql-每行](/upload/InfoBanner/zyjiaocheng/881/1e562dfe857e4e5892ad45587d6a3b63.jpg)
我写了一个插入触发器.呜
下一步是我要在触发器运行后运行查询或过程.因此,不是针对插入的每个记录,而是在插入之后.
我在哪里打这个电话?
DELIMITER $$
DROP TRIGGER /*!50033 IF EXISTS */ triggername $$
CREATE TRIGGER triggername
AFTER INSERT ON tableA
FOR EACH ROW
BEGIN
/*This runs for each insert - I want it to run at the end of the trigger*/
CALL UpdateOtherStuff(NEW.fieldA, NEW.fieldB);
END$$
谢谢,
垫
解决方法:
MySQL触发器语法是有限的.同一张表上不能有多个触发器.您不能具有数据库级触发器.
简而言之,您不能这样做,因为MySQL不知道您要插入1000个值还是仅插入一个.它们都是独立的事件,即使您是从一个语句中触发它们也是如此.
FOR EACH ROW是CREATE TRIGGER语法的固定部分,它不是可选的.
当我遇到同样的问题时,我实现了存储函数,并使用这些函数来进行插入和更新代码.
函数和存储过程的限制很多,例如无法将可变数量的参数传递给它们(例如,您可以传递以插入/更新)或无法将WHERE子句传递给它们,以便它们可以过滤它们正在影响.
但是您可以克服过滤限制,例如:
CREATE FUNCTION x(id INTEGER) ...
SELECT x(object_id) FROM objects WHERE ...
我不确定MySQL是否会像在现场执行该函数那样优化它,并且不需要对象数据就可以在函数中重新选择它.但是我认为没有…它认为函数内部的更新查询按常规运行.
内容总结
以上是互联网集市为您收集整理的mysql-每行全部内容,希望文章能够帮你解决mysql-每行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。