- PR -

SQL で INSERT 時の SELECT

投稿者投稿内容
ぶんぶん
会議室デビュー日: 2003/12/11
投稿数: 17
お住まい・勤務地: 東京・品川区
投稿日時: 2004-07-02 15:00
HIRDBというDBを使用しています。
oracleで動作していたプログラムを移行している最中です。
多少、SQLの記述方法が異なる部分があるので、それらに対応していますが…
以下のSQLが、HIRDBでは実行不可能です。
・理由は「INSERT」テーブルは「SELECT」テーブルと同じではあってはなりません。
というものです。(エラーメッセージ直訳)

INSERT INTO AA
(項目1, 項目2)
SELECT 'xxx', 項目2 FROM AA WHERE 項目3='yyy';

・FROM AA BB などの別名使用はだめでした。
・SELECT 'xxx', 項目2 FROM AA WHERE 項目3='yyy'を
 SELECT BB.* FROM (SELECT 'xxx', 項目2 FROM AA WHERE 項目3='yyy') BB
 でもだめです。

記述方法でなにかよいアイディアはないものか、と思いまして質問させていただきます。
〜してみては?等何かありませんでしょうか。
(SQL1文で実行する前提です)
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2004-07-02 15:18
>理由は「INSERT」テーブルは「SELECT」テーブルと同じではあってはなりません。
>というものです。(エラーメッセージ直訳)

ということなので どうあがいても無理なのでは?


>(SQL1文で実行する前提です)
とのことですが、理由は

アプリ側で普通に1行ずつよみこんで、insertしてもあまりかわらないようなきもしますが、
あるいは プロシージャで実装するとか
カニ
ベテラン
会議室デビュー日: 2004/06/24
投稿数: 53
お住まい・勤務地: 横浜・川崎
投稿日時: 2004-07-02 15:33
SELECT 'xxx', 項目2 FROM AA WHERE 項目3='yyy'
をビューにしても駄目かなあ
ぶんぶん
会議室デビュー日: 2003/12/11
投稿数: 17
お住まい・勤務地: 東京・品川区
投稿日時: 2004-07-02 16:07
>ということなので どうあがいても無理なのでは?
やはり無理ですかねぇ…(95%はあきらめてるんですが…)
プログラム内で個別対応というのが現実的な方法ですかね。
(プロシジャはある理由により不採用なんです)
ありがとうございます。
ぶんぶん
会議室デビュー日: 2003/12/11
投稿数: 17
お住まい・勤務地: 東京・品川区
投稿日時: 2004-07-02 16:14
七味唐辛子さん、ありがとうございます。

>ということなので どうあがいても無理なのでは?
うーん、やはりだめですかねぇ。(95%くらいあきらめていますが…)
プログラムで個別対応、ですか。(プロシジャはとある理由により不可なんです)
ぶんぶん
会議室デビュー日: 2003/12/11
投稿数: 17
お住まい・勤務地: 東京・品川区
投稿日時: 2004-07-02 16:23
カニさん、ありがとうございます。

早速やってみました。
だめでした。メッセージは同一でした。
ぶんぶん
会議室デビュー日: 2003/12/11
投稿数: 17
お住まい・勤務地: 東京・品川区
投稿日時: 2004-07-02 16:45
あれ、七味唐辛子さんへのレスが重複してしますね、すみません。

ところで…
HIRDBを取り扱ってるサイト(会議室のような)を、どなたかご存知ありませんか?
製品に苦情を言うつもりはさらさらありませんが、情報量が少なく…
(最近出版された市販本は所有しています。)
Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2004-07-02 16:53
1.同じレイアウトのダミーテーブルを用意する。
2.元テーブルからダミーテーブルにinsertする。
3.ダミーテーブルから元テーブルにinsertする。

っていうのは、どうでしょう?

引用:

(SQL1文で実行する前提です)


だそうなので、3.をトリガーにしてしまうとか。

スキルアップ/キャリアアップ(JOB@IT)