Sql Oracle自动添加当前日期

Sql Oracle自动添加当前日期,sql,oracle,Sql,Oracle,我想创建一个表'product',并有一列date,当我向表中添加一些信息时,是否可能会添加当前日期 如果是,请提供此表的示例 create table products ( id number not null, date number not null ); 假设 您的列实际上没有命名为date,因为它是一个保留字 您的列实际上被定义为日期,而不是数字 您希望在插入新行时填充该列 可以为列定义默认值 SQL> ed Wrote file afiedt.buf 1 create

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

如果是,请提供此表的示例

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

  • 您的列实际上没有命名为
    date
    ,因为它是一个保留字
  • 您的列实际上被定义为
    日期
    ,而不是
    数字
  • 您希望在插入新行时填充该列
  • 可以为列定义默认值

    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
    列,则需要一个触发器

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

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

    我运行的程序与第一个示例几乎相同,您在该示例中将新列集添加到默认sysdate。将所有以前的记录更新到sysdate。有没有一种方法可以将它们保留为null,但同时让所有新记录自动默认为sysdate?忘了提一下,我正在使用ALTER TABLE添加新的日期列(而不是创建新表)。相关: