2012-05-29 95 views
1

我想創建一個觸發器,將加入的屬性設置爲當前年份。這是我的工作:SQL觸發器,將年份設置爲當前年份

CREATE OR REPLACE TRIGGER foo2 
BEFORE INSERT ON memberof 
FOR EACH ROW 
BEGIN :new.joined := 2012; 
END; 

我想將2012年更改爲下面的代碼,但不斷收到編譯器錯誤。什麼是適當的語法來完成這個?

select extract(year from sysdate) from dual 
+0

哪個DBMS是這樣的?甲骨文?如果是的話 - 請標記。 – 2012-05-29 04:32:23

+0

@WillHughes是oracle,對不起 – Steve

+0

爲什麼?這是DEFAULT約束的意思,不是觸發器 –

回答

2

這應該做的伎倆:

CREATE OR REPLACE TRIGGER foo2 
BEFORE INSERT ON memberof 
FOR EACH ROW 
BEGIN 
    :new.joined := to_char(sysdate,'YYYY'); 
END; 

欲瞭解更多信息,請瀏覽:http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm

這裏:http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions183.htm

BTW OMG小馬是正確的這通常應該用做默認值可以採取像

to_char(sysdate,'YYYY') 

+0

更新了答案,希望更清楚。 –

+0

加入是一個數字(4,0)數據類型,我得到PL/SQL:數字或值錯誤:字符到數字轉換錯誤當我使用此 – Steve

+0

你有to_char參數錯誤的方式。 –

相關問題