php - 触发更新mysql值

标签 php mysql triggers sql-update

我对 SQL 很陌生,正在开发一个小项目,但当我想要为我的模型实现触发器时,我陷入了困境。

我正在为一个体育联盟设计一个数据库。我有一个表“GamePlayed”,其中有一列名为“GoalsScored”,另一个表“Team”,其中有一列名为“GoalsFor”。这两个表通过“TeamID”键连接。

我想要一个触发器,通过将“GoalsScored”的值添加到先前的值来更新“GoalsFor”的值。这样,每场比赛,总进球数都会不断更新。

我尝试了以下方法:

CREATE TRIGGER "Goalsscored" AFTER UPDATE
ON `GamePlayed`
FOR EACH ROW
BEGIN
UPDATE `Team` SET `Team`.`GoalsFor`=`Team`.`GoalsFor`+`GamePlayed`.`GoalsScored` 
WHERE `GamePlayed`.`Team_TeamID`=`Team`.`TeamID`
END

不幸的是,它说我的 SQL 语法有问题... 我该怎么做?

最佳答案

您需要更改分隔符。像这样的事情

delimiter $$
CREATE TRIGGER "Goalsscored" AFTER UPDATE
ON `GamePlayed`
FOR EACH ROW
BEGIN
UPDATE `Team` SET `Team`.`GoalsFor`=`Team`.`GoalsFor`+`GamePlayed`.`GoalsScored` 
WHERE `GamePlayed`.`Team_TeamID`=`Team`.`TeamID`;
END;
$$

参见例如http://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html

关于php - 触发更新mysql值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37654406/

相关文章:

php - DB_PREFIX 和针对 SQL 注入(inject)和其他攻击的安全性

php - 如何使用 codeigniter 将 file_path 插入数据库

sql-server - 在 SQL Server 2008 中仅更新同一表中的特定列后更新触发器中的一列

google-apps-script - 如何在 Google 脚本代码中将脚本更改为 AuthMode.LIMITED?

PHP MySQL 错误日志函数

php - mysqli 根据行ID值显示数据

php - 我的 php 代码到 mysql 数据库时遇到问题。数据库无法读取

triggers - 创建一个监听多个表的全局触发器

php - laravel 一个帐户下的多个电子邮件地址

php - 错误的 bool 值语句未插入数据库