[英]How to Create Trigger After Insert with select data from Multiple table with Join in MYSql
[英]MySQL Trigger Insert After with Select query from different table
DBA的新手,感謝您的支持。
概述:我有組,子組和用戶。
下表如下(簡化):
組 (topic_id,標題)
子組 (subtopic_id,title,topic_id)
rel_Group (user_id,topic_id,type)//確定用戶與組(所有者,協作者或關注者)的關系
rel_Subgroup (user_id,subtopic_id,type)//確定用戶與子組(所有者,協作者或關注者)的關系
用戶 (user_id)
我想在創建子組時創建一個觸發器,該子組將在rel_Subgroup中進行INSERT / UPDATE / DELETE行,以便分別是所有者,協作者或組關注者的用戶分別是所有者,協作者或子組關注者
這是我最近得到的但仍然得到的: #1415-不允許從觸發器返回結果集。
SQL查詢
delimiter //
create trigger Transfer_Rights_to_Subgroup
after insert
on Subgroup
for each row
begin
select user_id,type from rel_Group where rel_Group.topic_id = NEW.topic_id;
insert into rel_Subgroup VALUES (rel_Group.user_id,NEW.subtopic_id,rel_Group.type);
END; //
delimiter ;
我希望對插入進行排序,然后找出更新/刪除。
任何幫助,不勝感激!
謝謝
設法解決它:
DROP TRIGGER IF EXISTS Transfer_Rights_to_Subgroup;
DELIMITER //
CREATE TRIGGER Transfer_Rights_to_Subgroup AFTER INSERT ON subgroup
FOR EACH ROW
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE c1 INT;
DECLARE c2 INT;
DECLARE cur CURSOR FOR SELECT User_ID,Type FROM rel_group WHERE rel_group.Topic_ID = NEW.Topic_ID;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
ins_loop: LOOP
FETCH cur INTO c1,c2;
IF done THEN
LEAVE ins_loop;
END IF;
INSERT INTO rel_Subgroup VALUES (c1,NEW.Subtopic_ID,c2);
END LOOP;
CLOSE cur;
END; //
DELIMITER ;
試試這個:
delimiter //
create trigger Transfer_Rights_to_Subgroup
after insert
on Subgroup
for each row
begin
select user_id,type into @userid, @type from group where rel_Group.topic_id = NEW.topic_id;
insert into rel_Subgroup VALUES (@userid,NEW.subtopic_id,@type);
END; //
delimiter ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.