2013-03-02 34 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

相關問題