ECCUBE 2.13.x系のテーブルを見ると、
「_id_seq」で終わるテーブルがある。

各テーブルで主キーに「Audo_Incliment」を指定すれば良いもののを、
あえて、テーブルで管理している。

まあ、いいんだけど、この_id_seqで終わるテーブルが、
以外に多くて、テーブルを探すときに、邪魔・・・

***

ということで、

すで、Eccube 3.x系が主流なので、移行すべきなところはさておき、
これらのシーケンステーブルを削除し、1つのテーブルにまとめてみた。

新たに作成したテーブルは、「_sequence」とし、
項目は、以下の通りである。

  • seqeuence_name [varchar(64)] :シーケンス名
  • sequence[int]:
  • updated[datetime]: 保守用最終更新時刻

SC_Query_Exで、クラスを拡張したのが、以下のコードで、
「_sequence」というテーブルがあるときのみ、作動する。
※シーケンス名が存在するかも、チェックしたほうがいい。

ポイント

$this->conn->nextID で、値を拾ってきているのに対し、

nextValを使っているコードを、すべて書き直すわけではなく、
nextVal内での取扱い、
「_sequence」へ個別にupdate / selectしているだけなので、
コードの修正は、最小限となっております!

※動作確認したが、実運用はしていない状態のコードなので、要修正

一応、動くは動くものの、
1日1万件の処理とかになると、耐久性には心配が残ります。

ECCUBE 2.13.x シーケンステーブル