gpt4 book ai didi

mysql - 添加新记录时插入到另一个表的触发器

转载 作者:行者123 更新时间:2023-11-30 00:07:28 25 4
gpt4 key购买 nike

我有两张 table 。利润表的数据将来自投注表。因此,每当投注表中添加新记录时,自动 INSERT 到利润表将会很方便。

如何确保触发器仅插入利润表中不存在的数据?

这是我到目前为止所做的

DELIMITER $$
DROP TRIGGER IF EXISTS tsuika $$
CREATE TRIGGER keisan BEFORE INSERT ON profitdb
FOR EACH ROW BEGIN
INSERT INTO `profitdb`(`BetID`,`DateTime`, `PlayerID`,
`Profit`,`SubAgentID`,`SubAgentRisk`,`AgentID`,`AgentRisk`)
SELECT `betdb`.`BetID`,`betdb`.`DateTime`,`betdb`.`PlayerID`,
(`BetAmount`-Payout`),`playerdb`.`SubAgentID`,`subagentdb`.`Risk`,
`agentdb`.`AgentID`,`agentdb`.`Risk` FROM `betdb` LEFT JOIN `playerdb` ON
`betdb`.`PlayerID` = `playerdb`.`PlayerID` LEFT JOIN `subagentdb` ON
`subagentdb`.`SubAgentID` = `playerdb`.`SubAgentID` LEFT JOIN `agentdb` ON
`agentdb`.`AgentID` = `playerdb`.`AgentID`
END
$$
DELIMITER;

我提到了这个链接MySQL trigger On Insert/Update events关于使用 INSERT 创建触发器但仍然收到此错误

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解第 5 行“END”附近使用的正确语法

最佳答案

您必须以默认分隔符结束所有可执行语句,即代码块中的';'分号。您在 select 语句后漏掉了一个分号。

并且您正在尝试删除不相关的触发器'tsuika'。它应该是您尝试创建或重新定义的当前触发器。将其更改为'keisan'

DELIMITER $$

DROP TRIGGER IF EXISTS keisan; $$ -- <--- this was with wrong trigger name. corrected.

CREATE TRIGGER keisan BEFORE INSERT ON profitdb
FOR EACH ROW BEGIN
INSERT INTO `profitdb`(`BetID`,`DateTime`, `PlayerID`, `Profit`,
`SubAgentID`,`SubAgentRisk`,`AgentID`,`AgentRisk`)
SELECT `betdb`.`BetID`, `betdb`.`DateTime`, `betdb`.`PlayerID`,
( `BetAmount` - `Payout` ), `playerdb`.`SubAgentID`,
`subagentdb`.`Risk`, `agentdb`.`AgentID`, `agentdb`.`Risk`
FROM `betdb`
LEFT JOIN `playerdb`
ON `betdb`.`PlayerID` = `playerdb`.`PlayerID`
LEFT JOIN `subagentdb`
ON `subagentdb`.`SubAgentID` = `playerdb`.`SubAgentID`
LEFT JOIN `agentdb`
ON `agentdb`.`AgentID` = `playerdb`.`AgentID`; -- <--- missed
END;

$$

DELIMITER ;

关于mysql - 添加新记录时插入到另一个表的触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24400639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com