我试图做一些mysql触发器编码。每次遇到回路都会失败。
CREATE TRIGGER `after_insert` AFTER INSERT ON `table_users`
FOR EACH ROW BEGIN
INSERT INTO table_user_plan (user_id, plan_id) VALUES
(NEW.id, (SELECT id FROM table_plans))
;
END
此处触发器已成功创建,但我收到错误
#1242 - 子查询返回超过1行
我理解这不起作用,因为table_plans中有多行......但是如果我想添加多行或者如何进行循环并首先选择计划然后插入table_users,我该如何处理?
先谢谢
答案 0 :(得分:1)
要根据SELECT
插入多行,您需要使用INSERT ... SELECT FROM ...
语法。在这种情况下,您可以使用类似
INSERT INTO table_user_plan
SELECT NEW.id AS user_id, tp.id AS plan_id
FROM table_plans tp;
(我认为这应该有用,虽然我从未尝试过在这种情况下使用NEW
。)