Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Melaksanakan Penambahan Auto SIRI Tersuai dalam Kategori dalam Pangkalan Data?

Bagaimana untuk Melaksanakan Penambahan Auto SIRI Tersuai dalam Kategori dalam Pangkalan Data?

Patricia Arquette
Lepaskan: 2025-01-14 08:27:43
asal
240 orang telah melayarinya

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

Kumpulkan mengikut nilai untuk melaksanakan kenaikan automatik SIRI tersuai

Cabaran:

Dalam sistem blog, anda mempunyai jadual artikel dengan tiga lajur: id (jujukan), kategori (varchar) dan category_id (int). Anda mahu category_id meningkat secara automatik dalam setiap kategori sambil kekal unik di seluruh jadual.

Ketidaksahan logik tersuai:

Cuba melaksanakan ini menggunakan dua pertanyaan dan kod logik yang berasingan boleh menyebabkan isu konkurensi dalam persekitaran berbilang pengguna.

Penyelesaian yang disyorkan:

Buang lajur category_id:

  • Alih keluar lajur category_id kerana ia tidak memberikan sebarang maklumat tambahan selain lajur id dan kategori.
  • Gunakan lajur id kenaikan automatik sebagai pengecam unik untuk artikel.

Pengiraan dinamik kedudukan kategori:

  • Jika anda masih memerlukan pengecam khusus kategori, gunakan fungsi row_number() untuk mengira kedudukan setiap artikel dalam kategori:
<code class="language-sql">SELECT id, category, ROW_NUMBER() OVER (PARTITION BY category ORDER BY id) AS category_id
FROM article;</code>
Salin selepas log masuk

Contoh:

<code class="language-sql">INSERT INTO article(category) VALUES ('stackoverflow');</code>
Salin selepas log masuk

Keputusan:

<code>SELECT * FROM article WHERE category = 'stackoverflow';
+----+-----------+---------+
| id  | category  | category_id |
+----+-----------+---------+
| 10  | stackoverflow | 1 |
| 11  | stackoverflow | 2 |
+----+-----------+---------+</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Penambahan Auto SIRI Tersuai dalam Kategori dalam Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan