Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL触发器,将年份设置为当前年份_Sql_Oracle - Fatal编程技术网

SQL触发器,将年份设置为当前年份

SQL触发器,将年份设置为当前年份,sql,oracle,Sql,Oracle,我想制作一个触发器,将joined属性设置为当前年份。这就是我的工作: 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 REPLAC

我想制作一个触发器,将joined属性设置为当前年份。这就是我的工作:

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;
有关更多信息,请参见此处:

在这里:

顺便说一句,OMG Ponies是正确的,这通常应该使用默认值来完成,默认值可以采用如下表达式

to_char(sysdate,'YYYY') 

还有。

这是哪个数据库管理系统?神谕如果是的话,请贴上标签。@WillHughes是的,甲骨文,对不起,为什么?这就是默认约束的含义,而不是trigger@OMGPonies作业assignment@Bart我的道歉我不知道谢谢你的提醒!joined是一个数字(4,0)数据类型,当我使用它时,我得到了PL/SQL:numeric或value-error:character-to-number转换错误这是一个错误的建议。通过将字符值指定给数字列,您依赖于隐式数据转换。使用
:new.joined=extract(从sysdate算起的年份)
更干净。