【发布时间】:2020-11-19 16:51:44
【问题描述】:
我有一个来自 uni 的任务,我需要模拟 Spotify 之类的东西(没有播放器)。
一些上下文:事情是我想创建一个触发器,以便在创建新播放列表时(表playlist 上的列),将创建者用户(userID)设置为它的第一个追随者。表followingPlaylist 是一个中间表,记录了哪个用户关注了哪个播放列表。最重要的是,帐户有两种类型,artists 和 users(所以有表 accounts 保存帐户信息,users 和 artists 保存 accountID 和 userID 或artistID)。
我遇到的问题是 mysql 在这个查询中抛出了 sintax 错误,如果有人可以帮助我,我将非常感激。这是查询:
CREATE TRIGGER primer_seguidor ON playlists
FOR INSERT AS
INSERT INTO followingPlaylist
(accountID, playlistID)
SELECT
playlists.playlistID, users.accountID FROM playlists
INNER JOIN usuers ON playlists.userID = users.userID;
【问题讨论】:
-
样本数据和期望的结果确实有助于阐明您想要做什么。
-
MySQL 没有
ON INSERT触发器支持。请阅读User Manual 并研究触发事件列表。 -
mysql 在这个查询中抛出 sintax 错误 如果您报告语法错误,那么您必须直接发布未更改且未缩短的错误消息文本。
-
@Akina 很好,这部分是没有必要分配的,因为否则我会被搞砸,感谢您的输入。
-
如果要将行插入到另一个链接表中,则必须使用 AFTER INSERT 触发器(即仅当插入已成功执行且没有错误时)。请注意,在 MySQL 中,触发器是基于行的,即它们处理每个单独的插入行,而不是复杂中的所有插入行(语法中的 FOR EACH ROW 关键字)。因此,对于插入到定义触发器的表中的值的引用,您不能使用表别名,而是使用新的单行伪表别名。
标签: mysql sql triggers syntax-error