Heim >Datenbank >MySQL-Tutorial >Wie implementiert man eine benutzerdefinierte serielle automatische Inkrementierung innerhalb von Kategorien in einer Datenbank?

Wie implementiert man eine benutzerdefinierte serielle automatische Inkrementierung innerhalb von Kategorien in einer Datenbank?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-14 08:27:43246Durchsuche

How to Implement Custom SERIAL Auto-Increment within Categories in a Database?

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:

  • Entfernen Sie die Spalte „category_id“, da sie neben den Spalten „id“ und „kategorie“ keine weiteren Informationen enthält.
  • Verwenden Sie die automatisch inkrementierende ID-Spalte als eindeutige Kennung für den Artikel.

Dynamische Berechnung der Kategorieposition:

  • Wenn Sie noch kategoriespezifische Identifikatoren benötigen, verwenden Sie die Funktion row_number(), um die Position jedes Artikels innerhalb einer Kategorie zu berechnen:
<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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn