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
Freigeben: 2025-01-14 08:27:43
Original
294 Leute haben es durchsucht

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>
Nach dem Login kopieren

Beispiel:

<code class="language-sql">INSERT INTO article(category) VALUES ('stackoverflow');</code>
Nach dem Login kopieren

Ergebnis:

<code>SELECT * FROM article WHERE category = 'stackoverflow';
+----+-----------+---------+
| id  | category  | category_id |
+----+-----------+---------+
| 10  | stackoverflow | 1 |
| 11  | stackoverflow | 2 |
+----+-----------+---------+</code>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage