网站大量收购闲置独家精品文档,联系QQ:2885784924

ORACLE中默认值default的使用方法.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ORACLE中默认值default的使用方法 在创建数据库表时,你可以指定一个 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 table 或INSERT INTO table VALUES () 作为有效的 SQL。必须指定至少一个字段,但是可以使用 DEFAULT 关键字来允许使用默认值,而非硬编码值,所以下面是有效的语法,它将使用所有 DEFAULT 值创建一行记录。 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$ ---------- ????????? 1 可以使用SYS_CONTEXT 值的集合中的默认值来填充字段,并收集有关某处一个会话的重要信息: create table t4 ( ???? when date default SYSDATE, ???? db_domain varchar2(200) default SYS_CONTEXT(USERENV,DB_DOMAIN), ???? host varchar2(256) default SYS_CONTEXT(

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档