数据库触发 select 多行并插入 table

Database trigger select multiple rows and insert into table

了解使用数据库触发器。我正在尝试从一个 table 中 select 10 个随机记录并将它们全部插入到另一个记录中,同时保留最后一个插入 ID。我目前正在使用:

CREATE TRIGGER `Deal White Cards` AFTER INSERT ON `u`
FOR EACH ROW 
INSERT INTO dh (cid, uid) VALUES 
(
 (SELECT `id` FROM `c` WHERE `colour` = 'w' ORDER BY RAND() LIMIT 10),
 NEW.id
)

目前我只是收到一个错误(子查询 returns 多于 1 行)

您收到此错误是因为这部分子查询 returns 多于一行:

SELECT `id` FROM `c` WHERE `colour` = 'w' ORDER BY RAND() LIMIT 10

并且您正试图将其放在一行中。

解决方法是:

CREATE TRIGGER `Deal White Cards` AFTER INSERT ON `u`
FOR EACH ROW 
INSERT INTO dh (cid, uid)  
SELECT `id`, NEW.id FROM `c` WHERE `colour` = 'w' ORDER BY RAND() LIMIT 10;

希望,这就是你的意思;-)