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

标签 mysql phpmyadmin

我有两张 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/

相关文章:

php - 使用 PHP 脚本从下拉列表更新 SQL 数据库

java - Android ArrayIndexOutOfBoundsException 向 mysql 插入行

php - 即使我的用户名和密码正确,仍获取 "Warning: mysqli_connect(): (2800/1045)"

php - 为网站中的不同页面建立单独的数据库是一个好习惯吗?

mysql - 导入数据库时​​出现错误#1046

android - 如何将图像json数据放入listview中

Mac 上的 Mysql 5.1 : query cache not working

java - mysql sqlException 错误

mysql - config.inc.php 的 phpMyAdmin 权限

mysql - 无法编辑表,因为没有主键,无法创建键,因为有重复值