ホームページ >データベース >mysql チュートリアル >データベース内のカテゴリ内でカスタム SERIAL 自動インクリメントを実装するにはどうすればよいですか?
値でグループ化してカスタム SERIAL の自動増分を実装します
チャレンジ:
ブログ システムには、id (sequence)、category (varchar)、category_id (int) の 3 つの列を持つ記事テーブルがあります。 category_id をテーブル全体で一意に保ちながら、各カテゴリ内で自動的に増加させる必要があります。
カスタムロジックが無効です:
2 つの別個のクエリとロジック コードを使用してこれを実装しようとすると、マルチユーザー環境で同時実行の問題が発生する可能性があります。
推奨される解決策:
category_id 列を破棄します:
カテゴリ位置の動的計算:
<code class="language-sql">SELECT id, category, ROW_NUMBER() OVER (PARTITION BY category ORDER BY id) AS category_id FROM article;</code>
例:
<code class="language-sql">INSERT INTO article(category) VALUES ('stackoverflow');</code>
結果:
<code>SELECT * FROM article WHERE category = 'stackoverflow'; +----+-----------+---------+ | id | category | category_id | +----+-----------+---------+ | 10 | stackoverflow | 1 | | 11 | stackoverflow | 2 | +----+-----------+---------+</code>
以上がデータベース内のカテゴリ内でカスタム SERIAL 自動インクリメントを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。