2014-03-12 38 views
0

我有SQL觸發SQL觸發器現在的工作

CREATE or REPLACE TRIGGER student 
BEFORE INSERT ON MEMBEROF 
FOR Each Row 
WHEN (new.studentid != old.studentid) 
BEGIN 
DBMS_OUTPUT.PUT_LINE('Inserted new year '); 
select extract(year from sysdate) 
into :new.JOINED 
from dual; 
END; 
/

該觸發器是假設,當一個新條目被插入,當我嘗試插入年改爲當年

激活一些進入Memberof表的觸發器未被激活。

我的嘗試是 插入成員 values(75234,42,1999);

如果需要有關數據庫的詳細信息,讓我知道

感謝您的幫助提前

+0

一個'WHEN'這樣的條件是毫無意義的插入,假設studentid無論如何,這是一個必需的列。 –

回答

0

您的案例中的舊版本與新版本返回false,因爲old爲null,因爲每個新數據行均不存在舊值。

我猜你是在Oracle所以,你可以嘗試NVL()函數來彌補這一或者乾脆更改時,條件1 = 1

+0

哪一個是條件? –

+0

對不起,意思是什麼時候的情況。 –

+0

感謝1 = 1作品 –

0

我想你可以嘗試更新,而不是INSERT,應該不存在舊變量時調用INSERT觸發器。