mysql触发器循环

时间:2015-12-18 20:04:57

标签: mysql sql triggers

我试图做一些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,我该如何处理?

先谢谢

1 个答案:

答案 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。)