sql - 插入后触发以增加表
问题描述
我已经搜索了很多以前的问题,但我仍然不太了解。
我有一张桌子,nfl.games 和 nfl.teams。nfl.teams 有两列特别是保持运行总数
rushingyards
passingyards
当我将新游戏插入 nfl.games 时,其中有 6 列,
homerushingyards
homepassingyards
rivalpassingyards
rivalrushingyards
hometeamName
rivalteamName
hometeamName 和 CompetitionteamName 是我的团队表的外键。我试图创建的触发器是一个 AFTER INSERT 触发器,在 nfl.GAMES 表上进行插入后,它将为主队和对手球队获取冲球和传球码,并为该球队更新冲球和传球码在 nfl.TEAMS 表中。
老实说,我对 SQL 中的触发器很陌生,而且语法看起来很混乱,所以我想先尝试更新主队的冲球/传球码数。如果有人能指出我正确的方向,到目前为止我所想的大致是,
CREATE TRIGGER 'yardsUpdate' AFTER INSERT ON 'nfl.games' FOR EACH ROW
BEGIN
teams.passingyards = teams.passingyards + games.homepassingyards;
teams.rushingyards = teams.rushingyards + games.homerushingyards;
WHERE teams.teamName = games.hometeamName;
END
我知道这种语法很不对劲,但我认为这是朝着正确方向迈出的一步。
谢谢
解决方案
看来您想要一个UPDATE
团队表。为了引用 Trigger owner(nfl.games) 的列,请使用NEW
伪记录
CREATE TRIGGER yardsupdate AFTER
INSERT ON nfl.games
FOR EACH ROW
BEGIN
UPDATE nfl.teams t
SET t.passingyards = t.passingyards +:new.homepassingyards,
t.rushingyards = t.rushingyards +:new.homerushingyards
WHERE t.teamname =:new.hometeamname;
END;
/
推荐阅读
- angular - Angular Forms - 从 ValueChange 获取变化
- apache-camel - 在 Apache Camel 路由中定义非空映射变量
- google-apps-script - 从一个工作表复制查询函数的结果,并将其附加到不同文件中另一个工作表的末尾
- python - 使用网格评估数据
- node.js - GCP 构建失败 gyp ERR!堆栈错误:`make` 失败,退出代码:2
- excel - 如果列表的所有值都存在于不同的列中,请更改excel中单元格的颜色?
- oracle - 如何将 SQL 语句的结果保存到变量中?
- xml - 如何在包含 xml 的 Oracle 数据库查询字符串中发送与号
- javascript - 如何在引导模式窗口打开时授予用户访问权限
- firebase - Firestore:合并 2 个流并发出两个值