首页 > 解决方案 > 如何自动将数据从其他表插入到表中?

问题描述

我有一个使用两个主表创建的数据库:用户和系列。

我的关系是 N:M,我需要存储用户观看的章节,但我不想手动插入每个用户的每个系列。

我需要的可能是一个触发器,当我插入一个新系列时,它可以为每个用户插入一行,反之亦然。例如,如果我在我的 Serie 表中添加一个新的 serie (breakBad),则下一行需要出现在 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);

信息:使用的 DBMS 是 MySQL,在 PHPMyAdmin 中,在 HeidiSQL 中进行测试

标签: mysqlsqldatabasephpmyadmin

解决方案


要为每个用户插入一个新系列,触发器将如下所示:

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.


推荐阅读