数据库触发 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;
希望,这就是你的意思;-)
了解使用数据库触发器。我正在尝试从一个 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;
希望,这就是你的意思;-)