Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在添加新记录时插入另一个表的触发器_Mysql_Phpmyadmin - Fatal编程技术网

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 ;