日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

發(fā)布時(shí)間:2025/3/20 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于Oracle Insert 语句的子查询 和 with check option的用法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
今日睇ocp教程? 發(fā)現(xiàn) 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余的感覺, 的確。特別是那個(gè) "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)他們之前有什么區(qū)別呢, 我測過 效果系一樣的, 插入的果一條記錄都系咁 如下圖:


真系一溝樣。。。。


但系 加入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)這個(gè)一句能正常執(zhí)行。



但是,修改一下, 將要插入的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)



因?yàn)榧尤雡ith check option 不滿足subquery中的where條件的話,就不允許插入.
上面的的where 條件是 department_id = 50, 而插入的值是60 所以失敗了。

with check option還有另1個(gè)限制:。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)




也就是要保證插入的數(shù)據(jù) 要跟子查詢相對應(yīng)。


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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。