Oracle自动添加当前日期

时间:2012-11-20 17:57:42

标签: sql oracle

我想创建一个表'产品'并且有一个列date,当我向表中添加一些信息时,是否可能会添加当前日期?

如果是,请参阅此表的示例

create table products (
id number not null,
date number not null
);

1 个答案:

答案 0 :(得分:25)

假设

  1. 您的列实际上并未命名为date,因为这是一个保留字
  2. 您的列实际上定义为date而不是number
  3. 您希望在插入新行时填充列
  4. 您可以为列定义默认值。

    SQL> ed
    Wrote file afiedt.buf
    
      1  create table products (
      2  id number not null,
      3  dt date   default sysdate not null
      4* )
    SQL> /
    
    Table created.
    
    SQL>
    SQL> insert into products( id ) values( 1 );
    
    1 row created.
    
    SQL> select * from products;
    
            ID DT
    ---------- ---------
             1 20-NOV-12
    

    如果您想在dt行时修改UPDATE列,则需要触发器

    CREATE OR REPLACE TRIGGER trg_products
      BEFORE INSERT OR UPDATE ON products
      FOR EACH ROW
    BEGIN
      :new.dt := sysdate;
    END;
    

    触发器将覆盖作为INSERT列的UPDATEdt语句的一部分传入的任何值。默认值不会。