[pgsql-jp: 38698] VC++5.0からODBCにて挿入した場合にソートされない

岩瀬 肇 iwase-h @ cnt.mxy.nes.nec.co.jp
2007年 8月 30日 (木) 13:32:48 JST


いつもお世話になっています。岩瀬です。

まず、環境は以下の通りです。

VC++ 5.0
PostgreSQL 8.0.3
psqlODBC 07.03.0200

VC++ 5.0にてpsqlODBCを利用して、
PostgreSQLへデータを挿入しています。
データの詳細は記載できませんが、

コード|文字列1|文字列2|バイナリデータ

というデータを4000件超、テーブル1に
挿入するプログラム(以下、PG1)を
作成しています。

また、これとは別に

コード1|文字列1|文字列2|コード2|バイナリデータ

というデータを700件ほどテーブル2へ挿入する
プログラム(以下、PG2)も作成しています。


PG1およびPG2、ともにデータベースを以下のようにオープンしています。

CDatabase->OpenEx("DRIVER={PostgreSQL};UID=(ユーザ名);PWD=(パスワード);DATABASE=(データベース名);SERVER=(サーバー名);PORT=(ポート番号)", CDatabase::useCursorLib);

テーブルのオープンおよびデータの挿入は以下のようにしています。
こちらもPG1とPG2で処理を同じです。

CDatabase->Open(CRecordset::snapshot,NULL,CRecordset::skipDeletedRecords|CRecordset::useBookmarks);
CDatabase->AddNew();
(データの設定)
CDatabase->Update();

この方法でデータの挿入は行えるのですが、
挿入されたデータの順番がPG2ではコード1でソート
されていますが、PG1ではバラバラになってしまいます。
つまり以下のようになってしまいます。

データの挿入を以下のような順番で行っています。
AB001 | aaaa | bbbb | data1
CD001 | cccc | dddd | data2
EF001 | eeee | ffff | data3

挿入した結果を見ると、下記のように順番が
バラバラになってしまいます。
CD001 | cccc | dddd | data2
AB001 | aaaa | bbbb | data1
EF001 | eeee | ffff | data3


特に大きな問題はないのですが、なぜこのような
現象が起きるのかがわからないため、質問させてください。


以上、よろしくお願いいたします。



pgsql-jp メーリングリストの案内