ITPub博客

首页 > Linux操作系统 > Linux操作系统 > insert语句中append提示对字段的检查

insert语句中append提示对字段的检查

原创 Linux操作系统 作者:to_be_dba 时间:2013-03-14 09:44:59 0 删除 编辑

insert 语句中的append提示不仅可以通过直接寻址、少记录日志而达到加快速度的效果,在检查语句合法性方面也有额外的效果。如下例:

SQL> create table t(a number,b varchar2(20));

Table created

SQL> create sequence seq_t start with 1 ;

Sequence created

SQL> alter table t modify b not null;

Table altered

SQL> insert into t select seq_t.nextval,table_name from dba_tables where 1=2;

0 rows inserted

SQL> commit;

Commit complete

SQL> insert /*+append*/into t select seq_t.nextval,table_name from dba_tables where 1=2;

0 rows inserted

SQL> commit;

Commit complete

SQL> alter table t add c varchar2(10);

Table altered

SQL> alter table t modify c not null;

Table altered

SQL> insert into t select seq_t.nextval,table_name from dba_tables where 1=2;

insert into t select seq_t.nextval,table_name from dba_tables where 1=2

ORA-00947: 没有足够的值

SQL> insert into t(a,b) select seq_t.nextval,table_name from dba_tables where 1=2;

0 rows inserted

SQL> insert /*+append*/into t(a,b) select seq_t.nextval,table_name from dba_tables where 1=2;

insert /*+append*/into t(a,b) select seq_t.nextval,table_name from dba_tables where 1=2

ORA-01400: 无法将 NULL 插入 ("NB"."T"."C")

 

说明:如果表中某个字段为空,用未加hint:append的insert语句不会检查到我插入的字段中未包含非空列(这在测试时没有数据,而放到生产系统时原表含有数据时会导致报错);

hint:append添加后可以检查到此隐患并报错。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26451536/viewspace-756107/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-11-23

  • 博文量
    170
  • 访问量
    484879