アプリ版:「スタンプのみでお礼する」機能のリリースについて

oracle 複数列のデータ中身を別のテーブルの1列にインサートしたい
ご存知の方、オラクルプロの方、
若輩者の私にアドバイス等ご指導受けたまりたく存じます。

以下のようなテーブルがあったとします。
テーブルA
MID | K1 | K2 |K3
-------------------------
011 |ああ |いい |うう 
012 |ええ |おお |かか

特定の列を選択しての、Updateには成功しました。
update テーブルA set K1 =
(select K1|| ' ' ||K2|| ' '||K3
from テーブルA
where MID = '011')
where MID = '011';

これを別のテーブルに全行Insertしたいのです。約5千行はあり、環境の制限によりSQL文のみしか使えません。
テーブルB
MID |K1
-----------------------
011 |ああ いい うう
012 |ええ おお かか

以下のようなSQLで正しいでしょうか?
insert into テーブルA (K1)
select K1|| ' ' ||K2|| ' '||K3
from テーブルB;

上記の方法で実施しましたが、下記のようなエラーメッセージが表示されます。MID項目が主キーのため、NULL不可なことはわかりますが、指定していないMIDが何故でてくるのでしょう?
SQL Error: ORA-01400: テーブルA (MID) にはNULLは挿入できません。

環境情報:
Oracle 10g 
検証環境:Oracle SQL Developerあり
本番環境:Oracle SQL Developerなし、SQLのみ使用可

A 回答 (1件)

エラーの通りです。



>insert into テーブルA (K1)
>select K1|| ' ' ||K2|| ' '||K3 
>from テーブルB;
>指定していないMIDが何故でてくるのでしょう?

テーブルAのK1にテーブルBのK1+K2+K3のみを
インサートしようとしてます。
つまり主キーを指定していないから出てくるんです。

INSERT INTO テーブルA
SELECT MID,K1|| ' ' ||K2|| ' '||K3 
FROM テーブルB;
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す