2015-02-10 65 views
0

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

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

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; 

希望,是什么,你都意味着;-)

+0

完美:)谢谢! – jampez77 2015-02-11 09:05:00