日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于Oracle Insert 语句的子查询 和 with check option的用法

發布時間:2025/3/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于Oracle Insert 语句的子查询 和 with check option的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今日睇ocp教程? 發現 insert語句還可以子查詢例如:

INSERT INTO
????? (SELECT employee_id, last_name,
??????????????? email, hire_date, job_id, salary,
??????????????? department_id
?????? FROM employees
?????? where department_id = 50
?????? )

VALUES (99999, 'Taylor', 'DTAYLOR',
TO_DATE('07-06-1999', 'DD-MM-YYYY'),
'ST_CLERK', 5000,50)



系唔系有d無里頭,多q余的感覺, 的確。特別是那個 "where department_id = 50"
?我系sybase一般都是寫成下面的樣子的:
INSERT INTO employees(?????
employee_id, last_name,
??????????????? email, hire_date, job_id, salary,
??????????????? department_id)

VALUES (99999, 'Taylor', 'DTAYLOR',
TO_DATE('07-06-1999', 'DD-MM-YYYY'),
'ST_CLERK', 5000,50)他們之前有什么區別呢, 我測過 效果系一樣的, 插入的果一條記錄都系咁 如下圖:


真系一溝樣。。。。


但系 加入with check option 就大大不同了。
INSERT INTO
????? (SELECT employee_id, last_name,
??????????????? email, hire_date, job_id, salary,
??????????????? department_id
?????? FROM employees
?????? where department_id = 50
witch check option
?????? )

VALUES (99999, 'Taylor', 'DTAYLOR',
TO_DATE('07-06-1999', 'DD-MM-YYYY'),
'ST_CLERK', 5000,50)這個一句能正常執行。



但是,修改一下, 將要插入的department_id 改成60 就失敗了。

INSERT INTO
????? (SELECT employee_id, last_name,
??????????????? email, hire_date, job_id, salary,
??????????????? department_id
?????? FROM employees
?????? where department_id = 50
?????? with check option
?????? )

VALUES (99999, 'Taylor', 'DTAYLOR',
TO_DATE('07-06-1999', 'DD-MM-YYYY'),
'ST_CLERK', 5000,60)



因為加入with check option 不滿足subquery中的where條件的話,就不允許插入.
上面的的where 條件是 department_id = 50, 而插入的值是60 所以失敗了。

with check option還有另1個限制:。where條件指定的列如果不在insert的列中,也不允許插入
例如:

INSERT INTO
????? (SELECT employee_id, last_name,
??????????????? email, hire_date, job_id, salary
???????????????
?????? FROM employees
?????? where department_id = 50
?????? with check option
?????? )

VALUES (99999, 'Taylor', 'DTAYLOR',
TO_DATE('07-06-1999', 'DD-MM-YYYY'),
'ST_CLERK', 5000)




也就是要保證插入的數據 要跟子查詢相對應。


如果不加入with check option, 上面的語句是能執行的

總結

以上是生活随笔為你收集整理的关于Oracle Insert 语句的子查询 和 with check option的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。