私たちは、私たちの目録を含む製品データベースを持っており、それは別の製品ソースからの新しい(成長している)カタログと合併するでしょう。ソース1の製品は現在0〜50kのIDを持っています(毎月10〜15の新製品が追加されています)。インベントリにまだ追加されていないソース2の商品は、ID:1000000+から始まります。どのカタログからどの製品が来ているのかを認識し、製品表の製品IDを自動的にインクリメントすることを手動で処理するという、統合の容易さと認識を維持することを考えていました。MySQLで自動インクリメントを手動で処理する?
擬似コード:
私たちの前に挿入トリガーで、我々は以下をチェックします私に
if (product_source = 'internal_catalog') {
new.id = SELECT max(id) + 1 FROM products where product_source = 'internal_catalog';
} else {
new.id = new.original_product_id; -- original_product_id will always be unique and > 1000000;
}
、これは理論的には動作するはずですが、明らかに私は、同時実行エラーの心配しますそして衝突。私が見ることのできるところから、上記のトリガーはテーブルをロックして、衝突が起こらないようにします。上記のアプローチに問題はありますか?