我想创建一个触发器,将加入的属性设置为当前年份。这是我的工作: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
我想创建一个触发器,将加入的属性设置为当前年份。这是我的工作: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
这应该做的伎俩:
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')
。
更新了答案,希望更清楚。 –
加入是一个数字(4,0)数据类型,我得到PL/SQL:数字或值错误:字符到数字转换错误当我使用此 – Steve
你有to_char参数错误的方式。 –
哪个DBMS是这样的?甲骨文?如果是的话 - 请标记。 – 2012-05-29 04:32:23
@WillHughes是oracle,对不起 – Steve
为什么?这是DEFAULT约束的意思,不是触发器 –