Heim >Datenbank >MySQL-Tutorial >Wie implementiert man eine benutzerdefinierte serielle automatische Inkrementierung innerhalb von Kategorien in einer Datenbank?
Nach Wert gruppieren, um die automatische Erhöhung der benutzerdefinierten SERIAL-Nummer zu implementieren
Herausforderung:
In einem Blog-System haben Sie eine Artikeltabelle mit drei Spalten: id (Sequenz), Kategorie (varchar) und Category_id (int). Sie möchten, dass die „category_id“ innerhalb jeder Kategorie automatisch erhöht wird und gleichzeitig in der gesamten Tabelle eindeutig bleibt.
Ungültigkeit der benutzerdefinierten Logik:
Der Versuch, dies mithilfe von zwei separaten Abfragen und Logikcode zu implementieren, kann in einer Umgebung mit mehreren Benutzern zu Parallelitätsproblemen führen.
Empfohlene Lösung:
Spalte „category_id“ verwerfen:
Dynamische Berechnung der Kategorieposition:
<code class="language-sql">SELECT id, category, ROW_NUMBER() OVER (PARTITION BY category ORDER BY id) AS category_id FROM article;</code>
Beispiel:
<code class="language-sql">INSERT INTO article(category) VALUES ('stackoverflow');</code>
Ergebnis:
<code>SELECT * FROM article WHERE category = 'stackoverflow'; +----+-----------+---------+ | id | category | category_id | +----+-----------+---------+ | 10 | stackoverflow | 1 | | 11 | stackoverflow | 2 | +----+-----------+---------+</code>
Das obige ist der detaillierte Inhalt vonWie implementiert man eine benutzerdefinierte serielle automatische Inkrementierung innerhalb von Kategorien in einer Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!