首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从触发器将对象传递给过程?

问如何从触发器将对象传递给过程?
EN

Database Administration用户
提问于 2015-06-27 07:03:10
回答 1查看 1.6K关注 0票数 2

我正在使用MySQL5.6。插入或更新后,在触发器内部调用过程,那么如何将新对象和旧对象从触发器传递到过程?

EN

回答 1

Database Administration用户

发布于 2015-06-27 19:37:53

我发现了这个:来源

为什么您不应该从触发器中调用存储过程,这是很有原因的。触发器本质上是存储过程。他们的行为几乎很难倒退。即使所有底层表都是InnoDB,您也将体验到共享行锁的比例量和排它锁的恼人间歇性。如果触发器正在操作表,而插入和更新被停滞以在每个触发器调用中执行繁重的MVCC,则情况就是如此。不要忘记触发器需要开销。事实上,根据MySQL存储过程编程,标题“触发器开销”下的第256页说明如下:重要的是要记住,触发器必然会增加它们应用到的DML语句的开销。开销的实际数量将取决于触发器的性质,但是--当所有MySQL触发器对每一行执行时--处理大量行的语句的开销会迅速累积。因此,您应该避免在触发器中放置任何昂贵的SQL语句或过程代码。触发开销的扩展解释见第529-531页。该部分的结论点如下:这里的教训是:由于触发器代码将对受DML语句影响的每一行执行一次,因此触发器很容易成为DML性能中最重要的因素。触发器正文中的代码需要尽可能轻量级,并且--特别是--触发器中的任何SQL语句都应该尽可能地被索引所支持。

检查RolandoMySQLDBA的答案。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/105307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档