메시지 테이블이 있습니다. 메시지를 삽입 한 후 해당 삽입에서 MessageRecipient 테이블에 UserID와 MsgID를 삽입해야합니다. 메시지가 그룹에 전송 된 경우 해당 그룹의 구성원 인 모든 사용자에게 메시지를 삽입해야합니다. 여기에 내가 무엇을 가지고 있지만 messageRecipient 테이블에 삽입되지 않습니다삽입 후 오라클 트리거
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;
/
정확히 잘못 여기 무슨 일이야?
당신은 할당하여 불필요한 복잡성을 추가하는 곳에 정확히 볼 수 있도록 할 경우 변수에 새 값을. 나는 그것들을 제거함으로써 시작할 것입니다. 실제로, 나 였다면 트리거를 제거하고 단일 프로 시저를 사용하여 메시지 테이블에 삽입을 삽입하고받는 테이블에 삽입을 삽입하는 것으로 시작합니다. 트리거는 응용 프로그램을 작동하기 어렵게 만드는 것으로 유명합니다. –