最近用了一下Oracle数据库,想让表中的create_time和update_time两个字段自动添加系统时间;网上找了很多都说需要添加触发器,但是试用了很多都不起作用(坑的水分太多)。测试了很多方法终于整理了一个添加触发器的方法(亲测管用)
对于创建时间create_time字段,只有新添数据的自动添加时间,所以很简单: 只需要在表设计里面把create_time字段的类型改成DATE,同时在默认值里面填写sysdate 即可实现自动添加创建时间。
对于更新时间update_time字段就有点麻烦,不光新增的时候添加时间,在修改数据的时候也得更新当前时间,所以用触发器: 创建触发器的sql语句如下: (ABSAOC为数据库名,test123为触发器名(自己随便起,别重复),test_bbb为表名,update_time为更新时间字段)
CREATE TRIGGER "ABSAOC"."test123" BEFORE INSERT OR UPDATE ON
"ABSAOC"."test_bbb" REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW BEGIN
:NEW."update_time" := systimestamp; END;status
创建好触发器后,需要查看触发器的状态status是不是启用状态(状态是ENABLED即可):
select trigger_name,status from all_triggers ORDER BY trigger_name ;