2012-03-09 18 views
1

尋求一些基本的幫助,很可能在代碼中的錯字。Oracle觸發器拋出ORA-04098

我有以下幾點:

create table scott.original(mystr varchar2(10)) 
insert into scott.original values('hi') 
select * from scott.original 

CREATE OR REPLACE TRIGGER scott.original_trigger 
AFTER INSERT ON scott.original 
FOR EACH ROW 
BEGIN 
    select 'deleting or updating' from dual 
END; 
/

insert into scott.original values('bye') 

有插入的「再見」拋出錯誤ORA-04098,我看不到在Oracle第一次的問題,給予我試圖創建觸發器神諭。

回答

4

在PL/SQL塊不限SELECT語句需要選擇數據INTO一些變量。

CREATE OR REPLACE TRIGGER scott.original_trigger 
AFTER INSERT ON scott.original 
FOR EACH ROW 
DECLARE 
    l_variable VARCHAR2(100); 
BEGIN 
    select 'deleting or updating' 
     into l_variable 
     from dual 
END; 
/

將是有效的語法。當然,這個觸發器實際上並沒有做任何事情,但我認爲這是你計劃在以後處理的事情。

+0

謝謝你,是的,我試圖把所有的邏輯進去之前做一個簡單的觸發器。現在效果很好 – Alex 2012-03-09 21:26:07