ORACLE11gから追加された仮想列という機能がある。
列ごとに作ることができるビューみたいな機能なのだが、これで引っかかった。
INSERT文を実行した時に、「仮想列にはINSERTできません」みたいなエラーが起きる。
INSERT tbl1
SELECT col1,col2,v_col FROM tbl2;
上記のSQLを書いてた。
仮想列は表示するためだけの列なので、そりゃそうだ。
INSERTできるわけがない。
ということで書き換えた。
INSERT tbl1
SELECT col1,col2 FROM tbl2;
しかし、またエラーが起きた。
「列の指定が足りません。」
は?
まさかと思って再度書き換えた。
INSERT tbl1 VALUES ( col1, col2 )
SELECT col1,col2 FROM tbl2;
成功した。。。
どうやら、仮想列のあるテーブルのINSERT文は、省略すると、仮想列も挿入する項目として存在してしまうらしい。
こんなもの誰が使うんだ。。。ややこしい。