如何对数据库字段使用默认值?
一个常见的问题是模拟其它数据库提供商的 autonumber 功能,该功能是使用某种顺序数字自动地填充某个字段。在 oracle 数据库中,不能指定一个顺序数字作为一个字段的 default 值;然而,可以使用触发器模拟这一功能。 即使一个字段声明为 not null,也依然可以在 insert 语句中忽略这个字段,而使用一个触发器来填充该字段的值。注意使用 default 关键字比使用显式的 null 可读性要好。 create sequence t3_seq; create table t3(id$ integer constraint t3_pk primary key); cre...全部
一个常见的问题是模拟其它数据库提供商的 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(’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); select * from t4;。收起