- - PR -
SQL で INSERT 時の SELECT
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 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文で実行する前提です) | ||||
|
投稿日時: 2004-07-02 15:18
>理由は「INSERT」テーブルは「SELECT」テーブルと同じではあってはなりません。
>というものです。(エラーメッセージ直訳) ということなので どうあがいても無理なのでは? >(SQL1文で実行する前提です) とのことですが、理由は アプリ側で普通に1行ずつよみこんで、insertしてもあまりかわらないようなきもしますが、 あるいは プロシージャで実装するとか | ||||
|
投稿日時: 2004-07-02 15:33
SELECT 'xxx', 項目2 FROM AA WHERE 項目3='yyy'
をビューにしても駄目かなあ | ||||
|
投稿日時: 2004-07-02 16:07
>ということなので どうあがいても無理なのでは?
やはり無理ですかねぇ…(95%はあきらめてるんですが…) プログラム内で個別対応というのが現実的な方法ですかね。 (プロシジャはある理由により不採用なんです) ありがとうございます。 | ||||
|
投稿日時: 2004-07-02 16:14
七味唐辛子さん、ありがとうございます。
>ということなので どうあがいても無理なのでは? うーん、やはりだめですかねぇ。(95%くらいあきらめていますが…) プログラムで個別対応、ですか。(プロシジャはとある理由により不可なんです) | ||||
|
投稿日時: 2004-07-02 16:23
カニさん、ありがとうございます。
早速やってみました。 だめでした。メッセージは同一でした。 | ||||
|
投稿日時: 2004-07-02 16:45
あれ、七味唐辛子さんへのレスが重複してしますね、すみません。
ところで… HIRDBを取り扱ってるサイト(会議室のような)を、どなたかご存知ありませんか? 製品に苦情を言うつもりはさらさらありませんが、情報量が少なく… (最近出版された市販本は所有しています。) | ||||
|
投稿日時: 2004-07-02 16:53
1.同じレイアウトのダミーテーブルを用意する。
2.元テーブルからダミーテーブルにinsertする。 3.ダミーテーブルから元テーブルにinsertする。 っていうのは、どうでしょう?
だそうなので、3.をトリガーにしてしまうとか。 | ||||
