MySQL 错误:存储函数/触发器中禁止更新
当尝试更新 MySQL 存储函数或触发器中的表时,您可能会遇到以下情况:遇到错误:
Error: Can't update table 'brandnames' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
理解错误
此错误源于 MySQL 中的限制,即禁止在执行 INSERT 触发器时修改表。此类修改可能会导致死锁或无限递归循环。
避免错误
要避免此错误,请考虑以下方法:
使用新旧字段:
修改触发器上下文:
使用 BEFORE INSERT 的示例触发器:
假设您有一个 full_brand_name 字段,并且需要创建一个包含前两个大写字母的 Short_name 字段:
CREATE TRIGGER `capital` BEFORE INSERT ON `brandnames` FOR EACH ROW BEGIN SET NEW.short_name = CONCAT(UCASE(LEFT(NEW.full_brand_name,1)) , LCASE(SUBSTRING(NEW.full_brand_name,2))) END
以上是为什么我无法更新 MySQL 存储函数或触发器内的表?的详细内容。更多信息请关注PHP中文网其他相关文章!