3
INSERT INTO (SELECT id,col1,col2,col3,col4 FROM table WHERE col1=1234) 
   VALUES(SEQ.NEXTVAL,2456,'qwew','12312','12312');

上記のクエリでは、 の値を持つtable場所にのみ行を挿入できると思いました。しかし、 for以外の値を挿入することはできました。col112341234col1

質問:

なぜ上記のようなクエリが必要なのですか? それを使用する実際のシナリオは何ですか?

4

2 に答える 2

1

これは基本的に、更新可能なビューを可能にする構造です。複数テーブルのシナリオでは、INSERT は基になるテーブルの 1 つに対してのみ行うことができます。ビューと挿入先のテーブルの間には、1 対 1 の関係がなければなりません。

あなたが示したクエリは、同じ概念を拡張したインライン ビューです。

詳細なドキュメントについては、こちらをお読みください

http://docs.oracle.com/cd/E17952_01/refman-5.1-en/view-updataability.html

実際の生活では、View を介してこれを行うことができるため、柔軟性と使いやすさが得られます。しかし、より価値のあるインプットは大歓迎です。

于 2013-09-19T15:23:43.253 に答える