【问题标题】:How to insert data into a table from other tables automatically?如何自动将数据从其他表插入到表中?
【发布时间】:2021-03-11 16:39:21
【问题描述】:

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

  • 用户值:[ 用户名 (PK) |密码]
  • 系列值:[名称(PK)|章节]

我的关系是 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 中进行测试

【问题讨论】:

  • 请提供样本数据、期望的结果以及清晰的逻辑解释。

标签: mysql sql database phpmyadmin


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多