【INSERT】在INSERT插入語句中引入條件限制選項實現資料插入控制
Oracle的insert插入語句的功能很是強大,我們可以實現在插入的過程中僅允許插入指定的資料記錄,功能展示在此,供參考。
1.環境準備
1)建立T表
sec@ora10g> create table t (x number, y number);
Table created.
2)初始化兩條資料,用於後續插入語句比對
sec@ora10g> insert into t values (1,null);
1 row created.
sec@ora10g> insert into t values (2,2000);
1 row created.
sec@ora10g> select * from t;
X Y
---------- ----------
1
2 2000
2.嘗試使用帶限制條件的插入語句
1)以下兩條SQL插入語句是符合條件的例子
這裡我們使用的是“with check option”選項限制插入T表時Y列值只允許是3000或4000。
sec@ora10g> insert into (select * from t where y in (3000,4000) with check option) values(3,3000);
1 row created.
sec@ora10g> insert into (select * from t where y in (3000,4000) with check option) values(4,4000);
1 row created.
sec@ora10g> select * from t;
X Y
---------- ----------
1
2 2000
3 3000
4 4000
上面兩條資料符合插入條件,插入成功。
2)嘗試插入不符合條件的資料
sec@ora10g> insert into (select * from t where y in (3000,4000) with check option) values(5,5000);
insert into (select * from t where y in (3000,4000) with check option) values(5,5000)
*
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation
sec@ora10g> select * from t;
X Y
---------- ----------
1
2 2000
3 3000
4 4000
顯然,在這種約束條件下,我們是無法插入Y值不等於3000和4000的資料的。
3)去掉“with check option”選項再次嘗試資料插入
sec@ora10g> insert into (select * from t where y in (3000,4000)) values(5,5000);
1 row created.
sec@ora10g> select * from t;
X Y
---------- ----------
1
2 2000
3 3000
4 4000
5 5000
此時插入資料的約束已取消。資料可以成功插入到T表中。
3.小結
本文給出了一種插入資料的特殊用法,目的是提醒大家,我們在使用常規插入技術的同時還有很多新奇的方法值得探索。
Good luck.
secooler
11.09.05
-- The End --
1.環境準備
1)建立T表
sec@ora10g> create table t (x number, y number);
Table created.
2)初始化兩條資料,用於後續插入語句比對
sec@ora10g> insert into t values (1,null);
1 row created.
sec@ora10g> insert into t values (2,2000);
1 row created.
sec@ora10g> select * from t;
X Y
---------- ----------
1
2 2000
2.嘗試使用帶限制條件的插入語句
1)以下兩條SQL插入語句是符合條件的例子
這裡我們使用的是“with check option”選項限制插入T表時Y列值只允許是3000或4000。
sec@ora10g> insert into (select * from t where y in (3000,4000) with check option) values(3,3000);
1 row created.
sec@ora10g> insert into (select * from t where y in (3000,4000) with check option) values(4,4000);
1 row created.
sec@ora10g> select * from t;
X Y
---------- ----------
1
2 2000
3 3000
4 4000
上面兩條資料符合插入條件,插入成功。
2)嘗試插入不符合條件的資料
sec@ora10g> insert into (select * from t where y in (3000,4000) with check option) values(5,5000);
insert into (select * from t where y in (3000,4000) with check option) values(5,5000)
*
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation
sec@ora10g> select * from t;
X Y
---------- ----------
1
2 2000
3 3000
4 4000
顯然,在這種約束條件下,我們是無法插入Y值不等於3000和4000的資料的。
3)去掉“with check option”選項再次嘗試資料插入
sec@ora10g> insert into (select * from t where y in (3000,4000)) values(5,5000);
1 row created.
sec@ora10g> select * from t;
X Y
---------- ----------
1
2 2000
3 3000
4 4000
5 5000
此時插入資料的約束已取消。資料可以成功插入到T表中。
3.小結
本文給出了一種插入資料的特殊用法,目的是提醒大家,我們在使用常規插入技術的同時還有很多新奇的方法值得探索。
Good luck.
secooler
11.09.05
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-706706/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL INSERT插入條件判斷:如果不存在則插入MySql
- oracle-資料庫- insert 插入語句Oracle資料庫
- Oracle 使用一條insert語句完成多表插入Oracle
- 【SQL】使用一條INSERT語句完成多表插入SQL
- 用insert all實現同時向多表插入資料
- MySQL:使用INSERT 插入多條記錄MySql
- Oracle批量插入資料insert all into用法Oracle
- insert批量插入優化方案優化
- [CareerCup] 5.1 Insert Bits 插入位
- SQL INSERT批次插入方式SQL
- 表number列的資料插入insert小測試
- 一個insert插入語句很慢的優化優化
- insert /*+ append */直接路徑插入APP
- 【SQL】 Multi table insert 多表插入操作SQL
- oracle insert all多表插入的示例Oracle
- oracle insert插入number(1)列的資料小測試Oracle
- 關於insert /*+ append*/ 各種insert插入速度比較APP
- imp之選項resumable匯入及insert插入資料因空間tablespace不足暫時掛起
- 使用Direct-Path INSERT插入資料到表中
- SQL INSERT INTO 語句詳解:插入新記錄、多行插入和自增欄位SQL
- PostgreSQL 原始碼解讀(4)- 插入資料#3(heap_insert)SQL原始碼
- c++ insert iterators 插入型迭代器C++
- 直接路徑插入 -- insert /*+append*/ into [zt]APP
- MyBatis insert操作插入,返回主鍵from官方MyBatis
- 用一條mysql語句插入多條資料MySql
- [LeetCode] 57. Insert Interval 插入區間LeetCode
- MySQL防止重複插入相同記錄 insert if not existsMySql
- [LeetCode] Search Insert Position 搜尋插入位置LeetCode
- 在一條DML語句中插入/更新/刪除/獲取幾百萬行資料,你會特別注意什麼?
- 演算法與資料結構系列 ( 四 ) - 插入排序法- Insert Sort演算法資料結構排序
- MySQL 如何實現資料插入MySql
- 二分搜尋樹系列之[ 插入操作 (insert) ]
- 二分搜尋樹系列之「 插入操作 (insert) 」
- Oracle insert all一次插入多個表中Oracle
- MySQL 匯出一條資料的插入語句MySql
- 【SQL】實現每隔一分鐘插入一條資料SQL
- [Q]怎麼實現一條記錄根據條件多表插入 zt
- mysqPoint型別查詢和插入操作:insert和select型別