我有一個消息表。在消息插入之後,我需要將該插入的UserID和MsgID插入到messageRecipient表中。如果郵件已發送給組,則需要將其插入到屬於該組成員的每個用戶。這裏是我的,但它沒有插入到messageRecipient表中:插入後的Oracle觸發器
create or replace trigger update_messages
after insert on messages referencing new as new old as old
for each row
declare
userID1 int(10);
msgID1 int(10);
groupID1 int(10);
begin
userID1 := :new.ToUserID;
msgID1 := :new.msgID;
groupID1 := :new.ToGroupID;
if inserting then
if(userID1 <> null)
then INSERT INTO messageRecipient VALUES(msgID1, userID1);
elsif(groupID1 <> null)
THEN INSERT INTO messageRecipient(msgID, userID) SELECT msgID1, userID FROM groupMembership WHERE gID = groupID1;
end if;
end if;
end;
/
究竟是什麼問題呢?
你被分配增加不必要的複雜性:新值的變量。我會開始刪除它們。實際上,如果是我,我實際上首先要刪除觸發器,並將消息表中的插入和插入收件人表中的插入一起執行,因爲觸發器對於使應用程序難以使用而臭名昭着。 –