Sql Oracle自动添加当前日期
我想创建一个表'product',并有一列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
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添加新的日期列(而不是创建新表)。相关: