insert語句中append提示對欄位的檢查
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部落格 ” ,連結:http://blog.itpub.net/26451536/viewspace-756107/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何自動填充SQL語句中的公共欄位SQL
- where語句中多條件查詢欄位NULL與NOT NULL不確定性查詢Null
- Oracle的語句中的提示Oracle
- [Mysql 查詢語句]——查詢欄位MySql
- 總結SQL語句中的優化提示SQL優化
- insert /*+ append */ into 與insert into 的區別APP
- ArcGIS對欄位分割查詢操作
- 查詢語句中escape的轉義字元字元
- 查詢表上的索引及對應的欄位索引
- SQL Server 2008 中SQL查詢語句中欄位值不區分大小寫問題處理SQLServer
- jpa~為欄位新增insert的預設值
- MySQL:查詢欄位數量多少對查詢效率的影響MySql
- beego的orm針對postgresql的jsonb欄位的查詢GoORMSQLJSON
- Laravel 對於 Mysql 欄位string型別查詢,當使用數字對這個欄位進行查詢,PHP弱型別語言導致索引失效LaravelMySql型別PHP索引
- clob 欄位查詢
- 【INSERT】在INSERT插入語句中引入條件限制選項實現資料插入控制
- INSERT...SELECT語句對查詢的表加鎖嗎
- sql語句中較為重要的查詢邏輯SQL
- Hibernate對檢視對映,當檢視中有空欄位的時候如何解決?
- insert append需要注意的問題APP
- insert /*+ append */直接路徑插入APP
- insert 中append 用法詳解APP
- 如果對10g 中含LOB欄位的表僅僅進行insert 的同步 ?
- 巧用欄位對映實現指定欄位的搜尋
- phpstrom用模型where查詢,欄位為什麼不會提示?PHP模型
- SQL INSERT INTO 語句詳解:插入新記錄、多行插入和自增欄位SQL
- CTAS和insert append的一個測試APP
- 關於insert /* append */的幾點註記APP
- 關於insert /*+ append*/ 各種insert插入速度比較APP
- nologging和insert /*+append*/APP
- Append與Direct-Path Insert(一)APP
- Append與Direct-Path Insert(二)APP
- 直接路徑插入 -- insert /*+append*/ into [zt]APP
- Laravel ORM 中,根據關聯查詢的欄位值,對主查詢排名LaravelORM
- sql語句中as的用法SQL
- sql語句修改欄位型別和增加欄位SQL型別
- oracle 對於SQL語句中物件名的解析順序OracleSQL物件
- 新增欄位對SQL的影響SQL