【问题标题】:how to retrieve multiple values returned by select statement in trigger?如何检索触发器中select语句返回的多个值?
【发布时间】:2013-03-02 11:07:32
【问题描述】:

我在 phpmyadmin 中创建了以下触发器。

delimiter |
create trigger active after insert on event
for each row
begin
declare n int;
set n = (select follower_id from follow where circle_id=new.circle_id);
insert into activity (uid, performed_activity_id,activity_type_id) values(new.uid,new.event_id,'1');
insert into notification (sender_id,receiver_id,message)values (new.uid,n,new.title);
end;
|

我在这里遇到的问题是 select 语句返回的值更多。

ERROR 1242 (21000): Subquery returns more than 1 row

如何从 select 语句中获取多个值以及如何将它们传递给 insert statemant?

【问题讨论】:

    标签: mysql sql triggers subquery


    【解决方案1】:

    问题出在这一行,

    set n = (select follower_id from follow where circle_id=new.circle_id);
    

    变量只能保存一个值。如果查询的结果是null或者一个值就可以了,否则会抛出select查询返回多个值的错误信息。

    但是可以通过添加LIMIT来解决,例如

    set n = (select follower_id from follow where circle_id=new.circle_id LIMIT 1);
    

    更新 1

    delimiter |
    create trigger active after insert on event
    for each row
    begin
    
        insert into activity (uid, performed_activity_id, activity_type_id) 
        values (new.uid, new.event_id, '1');
    
        insert into notification (sender_id, receiver_id, message)
        select new.uid, follower_id, new.title
        from   follow 
        where  circle_id=new.circle_id;
    
    end |
    delimiter ;
    

    【讨论】:

    • 但我想要 follower_id 的所有值并将它们传递给通知
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    相关资源
    最近更新 更多