2012-05-29 57 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参数错误的方式。 –

相关问题