对数据库字段使用默认值(2)

文章作者 100test 发表时间 2007:03:14 13:55:17
来源 100Test.Com百考试题网



一个常见的问题是模拟其它数据库提供商的 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
0select t3_seq.nextval into :new.id$ from dual.
end if.
end.
/
show errors.

insert into t3(id$) values (default).
0select * 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(’userenv’,’host’),
ip_address varchar2(256) default sys_context(’userenv’,’ip_address’),
language varchar2(256) default sys_context(’userenv’,’language’),
protocol varchar2(200) default sys_context(’userenv’,’network_protocol’),
terminal varchar2(200) default sys_context(’userenv’,’terminal’)
).
insert into t4 (when) values (default).
0select * from t4.

相关文章


dbms_job包的应用:在Oracle中实现定时操作
ORACLE学习笔记之调节性能优化篇(2)
利用外部命令Oralce数据库导入导出
ORACLE学习笔记之调节性能优化篇(1)
对数据库字段使用默认值(2)
Oracle9i数据库异常关闭后的启动
简单介绍Oracle数据库去除别名的方法
对数据库字段使用默认值(1)
案例学习Oracle错误:ORA-00922(2)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛