【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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle-資料庫- insert 插入語句Oracle資料庫
- Oracle批量插入資料insert all into用法Oracle
- SQL INSERT批次插入方式SQL
- insert批量插入優化方案優化
- [LeetCode] 57. Insert Interval 插入區間LeetCode
- SQL INSERT INTO 語句詳解:插入新記錄、多行插入和自增欄位SQL
- PostgreSQL 原始碼解讀(4)- 插入資料#3(heap_insert)SQL原始碼
- MySQL防止重複插入相同記錄 insert if not existsMySql
- 演算法與資料結構系列 ( 四 ) - 插入排序法- Insert Sort演算法資料結構排序
- Oracle insert all一次插入多個表中Oracle
- 二分搜尋樹系列之[ 插入操作 (insert) ]
- 二分搜尋樹系列之「 插入操作 (insert) 」
- 用一條mysql語句插入多條資料MySql
- 在一條DML語句中插入/更新/刪除/獲取幾百萬行資料,你會特別注意什麼?
- 演算法與資料結構系列 ( 五 ) - 插入排序法改進- Insert Sort演算法資料結構排序
- MySQL 如何實現資料插入MySql
- MySQL 匯出一條資料的插入語句MySql
- insert all和insert first語句的用法
- mysql 插入時帶判斷條件MySql
- mybatis插入資料、批量插入資料MyBatis
- Django查詢特定條件的資料並插入其他表格模型Django模型
- mybatis怎麼實現insert into多個資料-oracle資料庫MyBatisOracle資料庫
- SQLite Insert 語句SQLite
- MyBatis從插入語句中檢索自動生成的IDMyBatis
- Mysql在資料插入後立即獲取插入的IdMySql
- Oracle中的insert/insert all/insert firstOracle
- 如何快速安全的插入千萬條資料
- sql server 複製相同表批次插入資料包僅當使用列列表並且 IDENTITY_INSERT 為ON時SQLServerIDE
- Vue 框架-06-條件語句 v-if 實現選項卡效果Vue框架
- Innodb:insert 第一次進行樂觀插入邏輯(二級索引)索引
- java之5分鐘插入千萬條資料Java
- laravel實現100w大量資料插入資料庫Laravel資料庫
- 【SQL】9 SQL INSERT INTO 語句SQL
- MYSQL資料插入和更新的語法MySql
- 怎麼快速插入 100 條資料,用時最短!
- [20181120]奇怪的insert語句.txt
- mysql update join,insert select 語法MySql
- 教你使用SQLite-insert語句SQLite
- 選擇排序和插入排序(C++實現)排序C++