Mysql触发器: Tried other suggestions but still get Error #1064

标签 mysql triggers phpmyadmin

我一直在这里查看其他 stackoverflow 问题,但似乎找不到我的错。我认为它与语法错误有关。我哪里错了?

DELIMITER $$
DROP TRIGGER IF EXISTS keisan
CREATE TRIGGER keisan AFTER INSERT ON profitdb
FOR EACH ROW
BEGIN
DECLARE shinAgentPercent;
SET @shinAgentPercent:=`AgentRisk`-`SubAgentRisk`;
SET NEW.`SubAgentProfit` = `Profit`*(`SubAgentRisk`/100);
SET NEW.`AgentProfit` = `Profit`*(@shinAgentPercent/100);
END;
$$

最佳答案

首先,您需要在 drop ... 命令之后有一个结束语句指示。

DROP TRIGGER IF EXISTS keisan $$

其次,我建议您使用 BEFORE INSERT 触发器来设置表的其他列的表达式值。

示例:

DELIMITER $$

DROP TRIGGER IF EXISTS keisan $$

CREATE TRIGGER keisan BEFORE INSERT ON profitdb
FOR EACH ROW BEGIN
    SET @shinAgentPercent  := NEW.AgentRisk - NEW.SubAgentRisk;

    SET NEW.SubAgentProfit := NEW.Profit * ( NEW.SubAgentRisk  / 100 );
    SET NEW.AgentProfit    := NEW.Profit * ( @shinAgentPercent / 100 );
END;

$$

-- now reset the delimiter to defaut
DELIMITER ;

关于Mysql触发器: Tried other suggestions but still get Error #1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24360028/

相关文章:

需要简化比较所有旧的和新的更改的 MySQL 触发器

mysql - 如何使用触发器生成字段的值?

MySQL - 在更新两个表的插入触发器之后?

php - 如何使用 phpmyadmin 将具有相同架构的两个表合并为一个表

python - 使用 Python 的 AMP 堆栈

php - mysql 在准备好的语句中插入和选择

PHP MYSQL SELECT 查询卡在 WHERE 子句中的负值或语法上

mysql - 按一列的总和与另一列的一般值进行错误分组

postgresql - 在 PostgreSQL 中删除触发器的正确​​方法

mysql - 导出mysql数据库的表以插入到不同的数据库中