特定の主キー値に対する複数の自動インクリメント
質問:
どのようにすれば、データベースは、特定の主キー値に対して異なる自動インクリメント キーを提供するため、各主キー値は独自の値を持つようになります。独立したシーケンス?たとえば、テーブルに自動インクリメントの「id」列とユーザー ID の「uid」列が含まれている場合、「uid」値ごとに異なる自動インクリメント シーケンスを使用することは可能ですか?
答え:
MySQL と MyISAMエンジン
MySQL の MyISAM エンジンはこの機能をサポートしています。複数列インデックスのセカンダリ列に AUTO_INCREMENT が指定されている場合、AUTO_INCREMENT 列の生成値は MAX(auto_increment_column) 1 WHERE prefix=given-prefix.
その他の解決策
専用テーブルLock
もう 1 つの解決策は、INSERT を試行する前に排他的テーブル ロックを取得することです。これにより、同時 INSERT が競合状態を引き起こすのを防ぎます。ただし、テーブルへのアクセスがシリアル化され、スループットが制限されます。外部 ID 生成
別のアプローチは、memcached のようなメカニズムを使用して、トランザクション スコープの外で ID 番号を生成することです。または集中型サービス。これにより、データベース機能に依存せずに固有の ID 値が保証されます。考慮事項
この機能を実装するには、次のような潜在的な問題を慎重に考慮する必要があります。免責事項:
MySQL の InnoDB エンジンはこの機能をサポートしていません。以上がデータベース内の特定の主キー値に基づいて個別の自動インクリメント シーケンスを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。