10

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

如果是,请举这个表的例子

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

1 回答 1

28

假如说

  1. 您的列实际上没有命名date,因为这是一个保留字
  2. 您的列实际上被定义为 adate而不是 anumber
  3. 您希望在插入新行时填充该列

您可以为该列定义一个默认值。

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

如果要在行时修改dtUPDATE,则需要触发器

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

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

于 2012-11-20T18:03:04.927 回答