如何在 MySQL 触发器中更新同一个表?

Susan Sarandon
发布: 2024-11-01 16:58:02
原创
928 人浏览过

How can I update the same table within a MySQL trigger?

更新同一个表的 MySQL 触发器解决方法

MySQL 本质上限制触发器更新它们分配到的同一个表中的行,从而防止递归调用。尽管存在此限制,仍然存在可行的解决方法。

建议的解决方法

不要直接更新触发器中的行,而是利用执行所需逻辑的存储过程。此方法将行更新任务与触发器分离,并允许您规避限制。

示例

考虑以下场景:

<code class="sql">CREATE TABLE MyTable (
  id INT PRIMARY KEY,
  attribute VARCHAR(255)
);

-- Trigger to insert a row into MyTable for each new parent product record
CREATE TRIGGER my_trigger AFTER INSERT ON Products
FOR EACH ROW
BEGIN
  -- Issue SQL statement to call a stored procedure that performs the insert
  CALL insert_attribute(NEW.id, 'Value');
END;</code>
登录后复制

在上面的示例中,当一条新记录插入到 Products 表中时,触发器 my_trigger 调用存储过程 insert_attribute 在 MyTable 中插入一行,有效模仿了触发器内直接行更新的功能。

其他注意事项

虽然此解决方法可作为功能解决方案,但值得注意的是,它在性能和可维护性方面与传统触发器不同。与直接触发器更新相比,存储过程会给数据库系统带来额外的开销和复杂性。

以上是如何在 MySQL 触发器中更新同一个表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!