繁体   English   中英

MySQL触发器循环

[英]mysql trigger for loop

我正在尝试做一些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中呢?

提前致谢

要基于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 ,但我认为这应该可行。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM