2013-03-02 36 views
1

我已经在phpmyadmin中创建了以下触发器。如何检索触发器中select语句返回的多个值?

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; 
| 

我在这里得到的问题是,选择语句更多的reture一个值。

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

如何从select语句获取多个值,以及如何通过他们插入众所周知声明?

回答

2

问题是在这条线,

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 ; 
+0

但我想follower_id的所有值,并将其传递给通知 – 2013-03-02 11:10:09

+0

然后我就更新答案。 – 2013-03-02 11:12:32

+0

看到更新':D'使用'INSERT INTO ... SELECT' – 2013-03-02 11:14:34

相关问题