MySQL:UPDATE触发器如果无法匹配任何行,获取UPDATE的where子句中使用的列的值?

问题描述

| MySQL:在更新触发器的主体中,如果
wher
e子句根本不匹配任何行,我是否可以获取在触发查询的
where
子句中指定的列的值? 我必须执行以下操作,但不能使用直接查询,例如ON DUPLICATE KEY UPDATE等: 如果我有:
UPDATE my_table SET idiotism_level=5 WHERE name=\'Pencho\'
...并且where子句与NO ROWS匹配,我想在更新之前自动触发具有
name=\'Pencho\'
的行的插入,然后
UPDATE
可能会匹配并正常工作。 可能吗 ?     

解决方法

这可以在其他数据库系统(PostgreSQL)中的RULE中进行,而在MySQL中不存在。这是一条规则,而不是触发器,因为您应该分析查询而不是查询结果。 但是对于MySQL,您可以使用MySQL-Proxy进行预查询作业。您应该能够更改更新查询并构建一个插入,通过从MySQL-Proxy运行一些\'check row exist \'额外查询(我并不是说这是一个不错的解决方案,但是如果您没有办法为了使代码表现得更好,您可以在此级别进行修复)。     ,不会。更新触发器会为每条要更新的行触发一次,而不是为每条执行的更新命令触发一次。如果未进行任何更新,则无法触发触发器。您需要通过检查查询返回的更新行数来在应用程序中处理此问题。     ,如果名称具有唯一索引,则可以使用
REPLACE
REPLACE INTO my_table (idiotism,name) VALUES ( 5,\'Pencho\');
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...