mysql - 当此字段值 = 0 时,我尝试使用触发器自动更改字段值并收到 MySQL 错误

标签 mysql database

+------------+------------------+
| AMPHUR_NAME| AMPHUR_NAME_ENG  |
+------------+------------------+
| 1235855    | test12345        |
| 0          | zero             |  << I Want it.
+------------+------------------+

我希望在 AMPHUR_NAME = 0 时进行更新并自动更改 AMPHUR_NAME_ENG = 0。 我尝试在 phpmyadmin 中使用触发器。

我收到此错误:

#1442 - Can't update table 'amphur' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

从代码中:

CREATE TRIGGER `test` AFTER UPDATE ON `amphur`
FOR EACH ROW 
IF new.AMPHUR_NAME = 0
THEN
           UPDATE amphur SET amphur.AMPHUR_NAME_ENG = 'zero';
END IF

最佳答案

当表在触发器中使用时,您无法更新同一个表。

您需要更新 NEW.AMPHUR_NAME_ENG。
所以你的触发代码应该是这样的。

查询

CREATE TRIGGER `test` AFTER UPDATE ON `amphur`
FOR EACH ROW 
IF NEW.AMPHUR_NAME = 0
THEN
   SET NEW.AMPHUR_NAME_ENG = 'zero';
END IF

关于mysql - 当此字段值 = 0 时,我尝试使用触发器自动更改字段值并收到 MySQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47267895/

相关文章:

c - 哪个能够容纳 1 亿条记录的嵌入式数据库具有高效的 C 或 C++ API

mysql查询优化(使用sum函数)

php - fatal error : Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 1 in display. PHP 第 44 行

php - 使用现有数据库设置 CakePHP

mysql - 计算 mySQL 中每一行的出现次数

sql-server - ConnectionString 内嵌localdb visual studio 2015 相关数据目录

database - Terraform bool 变量 true - 基于映射值

python - 如何使用 Python Flask API 可靠地保持 SSH 隧道和 MySQL 连接打开?

mysql - 不要在我的应用程序中显示 mysql 错误

mysql - 带计数和日期的双 GroupBy 返回错误的日期