機能要望 > その他 > MySQL の auto_increment と PostgreSQL の serial 型について |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
nanasess |
投稿日時: 2010/8/19 20:45
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2303 |
MySQL の auto_increment と PostgreSQL の serial 型について いままで, EC-CUBE は自動採番に下記の実装を使用しています
* MySQL は auto_increment * PostgreSQL は serial 型 しかし, これらは下記のようなミスマッチを起こすため, プログラムの共通化ができていませんでした. * MySQL の auto_increment は, カラムの最大値を取得 * PostgreSQL の serial 型は, シーケンス値を取得 テーブルの ID を他のテーブルの外部キーに使いたい場合などは, PostgreSQL では INSERT 前に ID を取得して, MySQL では INSERT 後に ID を取得するなどしていたので, 不具合も発生しやすく, コードも煩雑になりがちでした. また, 他の RDBMS に対応しようとしても, 上記の処理が障壁で, 大幅なカスタマイズが必要でした. このような問題を解消するための改善を r18788 でコミットしました http://svn.ec-cube.net/open_trac/changeset/18788 INSERT 時に, 自動採番されなくなるため, 事前に SC_Query::nextVal() でシーケンス値を取得しなければなりませんが, コードが共通化でき, 他の RDBMS の採用も容易になります. PostgreSQL はシーケンス値を取得しますが, MySQL の場合はシーケンス用のテーブルから値を取得します. ビッグコミットが続いてますので, 不安定な状態がしばらく続くと思いますが, 何かありましたらフィードバック頂ければと思います! |
KAJI |
投稿日時: 2010/8/20 17:47
対応状況: −−−
|
一人前 登録日: 2008/1/24 居住地: 投稿: 121 |
Re: MySQL の auto_increment と PostgreSQL の serial 型について nanasessさん
株式会社ロックオンの梶原です。 本件、本当にお疲れ様です。 もうすぐですね。 もうすぐ、if (DB_TYPE == "mysql") { みたいなコードがなくなりそうですね。 EC-CUBEもようやくスピード感をもって前進していけそうです! |
nanasess |
投稿日時: 2010/8/20 18:21
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2303 |
Re: MySQL の auto_increment と PostgreSQL の serial 型について 引用:
ほとんど駆逐しました!! http://svn.ec-cube.net/open_trac/changeset/18789 バックアップ管理は, 大幅に改修が必要なのと, ダウンロード販売機能については後日対応します! |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |