gpt4 book ai didi

mysql - 递归 MySql 触发器不工作

转载 作者:行者123 更新时间:2023-11-29 02:04:19 25 4
gpt4 key购买 nike

我正在尝试设置一个 MySql 触发器,以便在 ODBC 中插入/更新数据后运行

我的触发器如下:

CREATE TRIGGER `myTrigger`
AFTER INSERT ON `testTable` FOR EACH ROW UPDATE `testTable` SET `Field One` = CONCAT(`Field One`, ' - Trigger');

我的触发器语句在 MySql 工作台中运行正常,但是当我从 Microsoft Access 数据库连接到 testTable 然后尝试插入一行时,我得到了其中之一:

Access Error

为了让事情变得更有趣,当我尝试运行以下命令时:

INSERT INTO `testTable` (`Field One`, `Field Two`, `Field Three`, `Field Four`, `Field Five`) VALUES ('x', 'xx', 'xxx', 'xxxx', 'xxxxx')

我收到以下错误:

ERROR 1442: Can't update table 'testtable' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

我在 Workbench 中的 Triggers 选项卡中的完整触发器代码如下:

-- Trigger DDL Statements
DELIMITER $$

USE `FooBar`$$

CREATE
DEFINER=`JMK`@`%`
TRIGGER `myTrigger`
AFTER INSERT ON `testtable`
FOR EACH ROW
UPDATE `testTable` SET `Field One` = CONCAT(`Field One`, ' - Trigger')$$

我做错了什么?

谢谢

最佳答案

即使添加触发器的查询在语法上是正确的并且已执行,但这并不意味着触发器功能有效。

您的触发器会自行触发。这是来自 MySQL documentation :

  • Stored functions cannot be used recursively.
  • Within a stored function or trigger, it is not permitted to modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger.

关于mysql - 递归 MySql 触发器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9116911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com