Mysql 在添加新记录时插入另一个表的触发器
我有两张桌子。利润表的数据将来自下注表。所以,每当新的记录被添加到投注表上时,自动插入利润表将是很方便的 如何确保触发器只插入利润表中不存在的数据 以下是我到目前为止所做的Mysql 在添加新记录时插入另一个表的触发器,mysql,phpmyadmin,Mysql,Phpmyadmin,我有两张桌子。利润表的数据将来自下注表。所以,每当新的记录被添加到投注表上时,自动插入利润表将是很方便的 如何确保触发器只插入利润表中不存在的数据 以下是我到目前为止所做的 DELIMITER $$ DROP TRIGGER IF EXISTS tsuika $$ CREATE TRIGGER keisan BEFORE INSERT ON profitdb FOR EACH ROW BEGIN INSERT INTO `profitdb`(`BetID`,`DateTime`, `Player
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;
我参考了这个关于使用INSERT生成触发器的链接,但仍然得到了这个错误
1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第5行“END”附近使用的正确语法。您必须使用默认分隔符,即“;”结束所有可执行语句代码块中的分号。 select语句后缺少分号 你正试图扣下一个不相关的扳机“tsuika”。它应该是您试图创建或重新定义的当前触发器。把它改成“keisan”
你的触发声明是错误的。如果存在keisan,则将其更改为下拉触发器;我更正了零件创建触发器keisan。。。要创建触发器tsuika。。。但是仍然会出现错误1235-这个版本的MySQL还不支持“一个表具有相同操作时间和事件的多个触发器”,这意味着不会删除触发器。如果存在,则删除相关触发器。检查我的更新答案。该表没有触发器,预期名称为tsuika,因此我使用tsuika。drop trigger tsuika的输出是什么;如果存在,则不使用。
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 ;