簡體   English   中英

MySQL觸發器插入后與來自不同表的選擇查詢

[英]MySQL Trigger Insert After with Select query from different table

DBA的新手,感謝您的支持。

概述:我有組,子組和用戶。

  1. 用戶可以是組的所有者,因此應該是其所有子組的所有者
  2. 用戶可以是組的協作者或關注者,因此應該是其所有子組的協作者或關注者
  3. 用戶可以是該小組的合作者或關注者

下表如下(簡化):

(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM