如何自动从其他 table 中插入数据到 table 中?
How to insert data into a table from other tables automatically?
我创建了一个包含两个主要 table 的数据库:用户和系列。
- 用户值:[ 用户名 (PK) |密码]
- 系列值:[名称(PK)|章节]
我有一个 N:M 关系,我需要存储用户观看的章节,但我不想手动插入每个用户的每个系列。
我需要的可能是一个触发器,当我插入一个新系列时,它可以为每个用户插入一行,反之亦然。
例如,如果我在我的 Serie table 中添加一个新的 serie (breakingBad),接下来的行需要出现在 User 和 Serie 之间的关系中:
-------------------------------------------------
| username (PK) | name (PK) | chaptersWatched |
-------------------------------------------------
| me235 | breakingBad | 0 |
-------------------------------------------------
| john23 | breakingBad | 0 |
-------------------------------------------------
etc..... for every user
我正在尝试这样做,但我是触发器的新手。我正在尝试做这样的事情:
CREATE TRIGGER `serie_before_insert`
BEFORE INSERT ON `serie`
FOR EACH ROW INSERT INTO users_watch_series
VALUES (user.username, serie.name, 0);
Info: DBMS used is MySQL, within PHPMyAdmin, and testing made within HeidiSQL
要为每个用户插入一个新系列,触发器应如下所示:
CREATE TRIGGER `serie_before_insert`
BEFORE INSERT ON `serie`
FOR EACH ROW
BEGIN
INSERT INTO users_watch_series
SELECT user.username, new.name, 0
FROM user;
END
也许最好将其定义为 AFTER INSERT
而不是 BEFORE INSERT
。
我创建了一个包含两个主要 table 的数据库:用户和系列。
- 用户值:[ 用户名 (PK) |密码]
- 系列值:[名称(PK)|章节]
我有一个 N:M 关系,我需要存储用户观看的章节,但我不想手动插入每个用户的每个系列。
我需要的可能是一个触发器,当我插入一个新系列时,它可以为每个用户插入一行,反之亦然。 例如,如果我在我的 Serie table 中添加一个新的 serie (breakingBad),接下来的行需要出现在 User 和 Serie 之间的关系中:
-------------------------------------------------
| username (PK) | name (PK) | chaptersWatched |
-------------------------------------------------
| me235 | breakingBad | 0 |
-------------------------------------------------
| john23 | breakingBad | 0 |
-------------------------------------------------
etc..... for every user
我正在尝试这样做,但我是触发器的新手。我正在尝试做这样的事情:
CREATE TRIGGER `serie_before_insert`
BEFORE INSERT ON `serie`
FOR EACH ROW INSERT INTO users_watch_series
VALUES (user.username, serie.name, 0);
Info: DBMS used is MySQL, within PHPMyAdmin, and testing made within HeidiSQL
要为每个用户插入一个新系列,触发器应如下所示:
CREATE TRIGGER `serie_before_insert`
BEFORE INSERT ON `serie`
FOR EACH ROW
BEGIN
INSERT INTO users_watch_series
SELECT user.username, new.name, 0
FROM user;
END
也许最好将其定义为 AFTER INSERT
而不是 BEFORE INSERT
。