[PHP-users 24096] DB_DataObject+SQLiteのちょっと?な動作

丸山 宏徳 kutsugi @ avis.ne.jp
2005年 1月 7日 (金) 11:16:56 JST


御無沙汰しております、丸山です。
表題の件、一応実働での確認+ざっとソースを読んでみたのですが、自分でもちょっ
と信じられないので、もしよろしければ検証してみてください>ALL

PEAR::DB_DataObjectはSQLiteに完全に対応してはいませんが、以前私がこのML
に投稿【PHP-users 23899】したように、.iniファイルや継承クラスを自分で書
いてやれば動作します。

……なんですが(^^;、.iniファイルもしくは継承クラスにて

(1)データ型に整数(DB_DATAOBJECT_INT)を指定
(2)キー項目に指定

……とした場合(条件を満たすカラムが複数の場合も含む)、どーやらテーブル
スキーマとは一切関係なしに、DB_DATAOBJECTがこの項目をシーケンス項目と判
断して独自にシーケンス管理を行うようなのです。御丁寧なことに、数値が入っ
たカラムが一つだけの、対象テーブル名+「_seq」というシーケンス管理テーブ
ルまで自動作成してくれやがります(^^;
やっかいなことに、insert時には条件に当てはまるカラムに全て同じ(生成した
次のシーケンスの値を)突っ込んでくれるようです。

……いやまぁ、SQLiteでは確かに、「INTEGER PRIMARY KEY」とした値がシーケ
ンシャルになる、というのは仕様なんですけどね(^^; ちょっと実装の仕方がち
がいませんか?>PEARの中の人

回避方法は、テーブルスキーマとは関係なしにDB_DATAOBJECT_STRを指定するこ
とです。……ってまぁ、SQLiteってそーゆーDBだというのは確かなのですけどね。


お暇な方がいらっしゃれば追試をお願いします&私のつたない英語力で見逃して
いるマニュアルの注意事項があれば御指摘ください>エラい人ALL



丸山 宏徳

E-Mail:kutsugi @ avis.ne.jp



PHP-users メーリングリストの案内