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

时间:2012-05-29 04:28:11

标签: sql oracle

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

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

1 个答案:

答案 0 :(得分: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')