mysql - 如何自动将数据从其他表插入到表中?
问题描述
我有一个使用两个主表创建的数据库:用户和系列。
- 用户值:[用户名(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 中进行测试
解决方案
要为每个用户插入一个新系列,触发器将如下所示:
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
.
推荐阅读
- reactjs - 在反应中提升表单提交的数据
- css - 等间距的 Flex 布局,居中并到两端
- ruby - Prawn PDF:更改 Prawn::Document 对象的边距
- flutter - 如何解决未处理的异常:处理后使用了 DashboardService
- python - 我在 python 中使用 map 函数有困难
- typescript - 打字稿没有注意到类构造函数不兼容
- hyperledger-fabric - 当我在fabric-sdk-go中使用msp向CA注册用户时,出现错误
- gdb - GDB-peda searchmem 命令
- swift - 尾随闭包传递给“Set”类型的参数
' 不接受闭包 - database - 性能休眠@Subselect vs 数据库视图