数据库触发器选择多行并插入表中

时间:2015-02-10 23:17:24

标签: mysql sql database triggers

知道使用数据库的触发器。我试图从一个表中选择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
)

目前我正在接收错误(子查询返回超过1行)

1 个答案:

答案 0 :(得分:1)

您收到此错误,因为子查询的这一部分返回多行:

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;

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