mysql - 根据另一个表值触发器设置新值

标签 mysql triggers

我正在尝试根据另一个表中的值设置一个新值。这是一个 BEFORE UPDATE 触发器。我需要根据表“webTransactions”中百分比列的值在“webs”表中设置一个新的金额。如果百分比 = 30.00,则新金额必须从任意值更改为 0.00。到目前为止我尝试过但给我的错误:

if new.type=9 and new.referenceId=0 then set new.amount=0.00 where (SELECT * FROM webs s JOIN webTransactions r ON r.webId = s.id WHERE s.percent = 30.00);

任何人都可以帮助运行此触发器吗?

谢谢

最佳答案

你可以尝试这样的事情

UPDATE websTransactions
SET amount= CASE
WHEN type=9 AND referenceId=0 THEN 0.00
ELSE amount
END
WHERE key IN   
(SELECT key FROM webs s JOIN webTransactions r ON r.webId = s.id 
WHERE s.percent = 30.00)

key 替换为 websTransactions 的主键

关于mysql - 根据另一个表值触发器设置新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27843160/

相关文章:

postgresql - 触发器阻止向表中插入数据

Postgresql 检查插入输入

php - mysql 中的子查询与 php

python - Mac 上的 MySQL 和 Django - 未加载 libssl.1.0.0.dylib

mysql - 触发器中变量的声明

postgresql - 如何修改触发器以更新 PostgreSQL 中的单个属性

mysql - 使用同一表中的数据更新行

mysql - 如何访问远程服务器上的phpMyAdmin

java - JPA:JPARepository 中的 ORDER BY 在 GROUP BY 之前