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\');
    

要回复问题请先登录注册