Oracle表添加时间字段

在执行update、insert操作时,时间字段会自动更新时间,插入当前系统时间

STUDY表结构如下:

SQL> desc study;
 Name					   Null?    Type
 ------- ----------------- -------- ----------------------------
 STUID					   NOT NULL NUMBER(10)
 STUNAME				   NOT NULL VARCHAR2(20)

SQL>

1、添加时间字段(假设该表在创建时没有加入时间字段)

#向表孔添加列(修改列使用modify)
ALTER TABLE table_name ADD( column datatype [DEFAULT EXPR][,column datatype...]);

SQL> alter table study add(time date);

#删除列
SQL> alter table study drop column time;

验证表结构:

SQL> desc study;
 Name					   Null?    Type
 ------------------------- -------- ----------------------------
 STUID					   NOT NULL NUMBER(10)
 STUNAME				   NOT NULL VARCHAR2(20)
 TIME						    	DATE

SQL>

2、创建触发器(Trigger)

#在执行update或insert操作时会自动向time列插入当前数据库时间
SQL> CREATE TRIGGER study_trigger
    before  INSERT OR UPDATE ON STUDY
FOR EACH ROW
BEGIN
     IF INSERTING THEN
        :NEW.TIME := SYSDATE;
    ELSIF UPDATING then
        :NEW.TIME := SYSDATE;
    END IF;
END;
/

Trigger created.

SQL>

3、插入数据验证

#随便插入一条数据
SQL> insert into study values(5,'xiaotian','');

1 row created.
#查询验证,time列已经自动插入系统时间
SQL> select * from study;

     STUID STUNAME		TIME
---------- ------------ -------------------
		 1 xiaohong
		 2 xiaoming
		 3 xiaoliang
		 4 xiaozhu
		 5 xiaotian		2021-03-17 14:13:07
#提交事务
SQL> commit;

Commit complete.

SQL>

update结果这里就不测试了,至此结束,谢谢。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐