oracle中default是啥意思,ORACLE中默认值default的使用方法

本文介绍了在Oracle数据库中为表字段设置默认值的用法,包括如何使用 DEFAULT 关键字设定默认值,如 SYSDATE 和 CURRENT_TIMESTAMP。还讨论了在 DEFAULT 值改变后,应用程序如何自动采用新值。此外,文章通过示例展示了如何通过触发器模拟其他数据库系统的Autonumber功能,以及如何在INSERT语句中使用触发器填充NOT NULL字段的值,提高代码可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在创建数据库表时,你可以指定一个 DEFAULT 值(即默认值)。对数据库字段使用默认值有助于将数据库设计问题与应用程序代码隔离。

可以在以后某个时候通过一条 ALTER TABLE 命令改变一个字段的默认值,改变之后应用程序代码会立即开始使用新值。

有一点是很重要的,即 DEFAULT 值只有当一个字段没有在 INSERT 或 MERGE 中指定值,或者使用了 DEFAULT 关键字时才会使用。如果你不显式地声明一个 DEFULAT 值,Oracle 将隐式地将默认值定义为 NULL,而且 DEFAULT 关键字也是这样。从 Oracle 9i开始,可以在 DEFAULT 子句中使用诸如 SYSDATE 或 CURRENT_TIMESTAMPE 之类的伪字段。例如:

create table t1

(

id$ integer not null,

charcol char default 'Y',

datecol date default sysdate,

strcol varchar2(30) default user,

intcol integer default 12

);

insert into t1 (id$) values (1);

select * from t1;

ID$ C DATECOL STRCOL INTCOL

---------- - --------- ------------------------------ ----------

1 Y 28-MAY-04 SCOTT 12

DEFAULT 关键字与INSERT、MERGE 或UPDATE 语法比起来可以看上去没有那么必要,但是想一下如果你希望在插入一列数据时使用所有默认值,那么你就不会这么认为了。Oracle 不接受INSERT INTO

create table t2(charcol char default 'Y',datecol date default sysdate);

insert into t2 (charcol) values (default);

select * from t2;

C DATECOL

- ---------

Y 28-MAY-04

一个常见的问题是模拟其它数据库提供商的 Autonumber 功能,该功能是使用某种顺序数字自动地填充某个字段。在 Oracle 数据库中,不能指定一个顺序数字作为一个字段的 DEFAULT 值;然而,可以使用触发器模拟这一功能。即使一个字段声明为 NOT NULL,也依然可以在 INSERT 语句中忽略这个字段,而使用一个触发器来填充该字段的值。注意使用 DEFAULT 关键字比使用显式的 NULL 可读性要好。

create sequence t3_seq;

create table t3(id$ integer constraint t3_pk primary key);

create or replace trigger t3_autonumber

before insert on t3 for each row

begin

if :new.id$ is null then

select t3_seq.nextval into :new.id$ from dual;

end if;

end;

show errors;

insert into t3(id$) values (default);

select * from t3;

ID$

----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值