【问题标题】:mysql trigger inserting duplicate rowsmysql触发器插入重复行
【发布时间】:2019-03-30 18:16:03
【问题描述】:

这是我第一次必须在 mysql 中创建触发器。我正在尝试更新一个小型日志表(4 列),其中一个是 URL。我让它工作,除了我不知道如何防止它在触发器触发时插入 2 行。由于最大键长度,我无法在 url 行上创建唯一索引。对其他方式有什么建议吗?我尝试通过 select 语句插入并使用 ON DUPLICATE KEY 没有成功。

CREATE DEFINER=`dbuser`@`%` TRIGGER `upd_url_prod` AFTER UPDATE ON  `products` 
FOR EACH ROW BEGIN
INSERT INTO my_changes (ext_id,url,changetime)
VALUES (NEW.external_id,NEW.detail_url,NOW());

结束

【问题讨论】:

  • 您能否分享您的完整触发器创建代码,以及导致触发器被激活的步骤。中间有几个不同的过程可能使数据插入两次。
  • 我更新了完整的触发代码。这是在 wordpress 网站后面,我正在使用插件来尝试导入产品,然后希望能够在通过此触发器更新时进行记录。来自 SQL Server 任何时候我需要更多地了解数据库或其对象正在做什么我会使用探查器 - 这里有什么类似的建议吗?

标签: mysql triggers duplicates


【解决方案1】:

我认为您需要检查触发器触发时的更新查询。也许该查询正在触发两次并且触发器正在触发。检查运行更新查询的脚本并记录该查询。

【讨论】:

  • 所以您实际上是正确的 - 当我在表上分析初始 UPDATE 时,我的触发器似乎正在运行 2 个相同的更新。任何想法为什么会这样?我能做些什么来避免这种情况?
猜你喜欢
  • 2019-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 2014-09-23
  • 1970-01-01
相关资源
最近更新 更多