我想创建一个“产品”表并有一列date
,当我向表中添加一些信息时是否可能添加当前日期?Oracle自动添加当前日期
如果是,请例如,这台
create table products (
id number not null,
date number not null
);
我想创建一个“产品”表并有一列date
,当我向表中添加一些信息时是否可能添加当前日期?Oracle自动添加当前日期
如果是,请例如,这台
create table products (
id number not null,
date number not null
);
假设
date
是一个保留字date
的而不是作为number
您可以为该列定义默认值。
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
如果您希望在UPDATE
行修改dt
列,你需要一个触发
CREATE OR REPLACE TRIGGER trg_products
BEFORE INSERT OR UPDATE ON products
FOR EACH ROW
BEGIN
:new.dt := sysdate;
END;
触发将覆盖传递中作为INSERT
或UPDATE
语句的一部分的任何值dt
列。默认值不会。
我跑得几乎一样您的第一个示例,您将新列设置为默认sysdate。这更新了所有以前的记录到sysdate。有没有办法让它们为空,但是让所有新记录自动默认为sysdate? – NealWalters
忘了提及,我在做ALTER TABLE来添加新的日期列(不是创建新表)。 – NealWalters
相关:http://stackoverflow.com/questions/12129051/what-is-the-sql-statement-oracle-to-alter-column-to-date-with-default-sysdate – Vadzim