2015-02-10 2 views
0

Знал использовать триггеры для баз данных. Я пытаюсь выбрать 10 случайных записей из одной таблицы и вставить их все в другую, сохраняя последний идентификатор вставки. Я в настоящее время использую:Триггер базы данных выбирает несколько строк и вставляет в таблицу

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

Смежные вопросы