2015-02-10 74 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

相關問題