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:
Pengiraan dinamik kedudukan kategori:
<code class="language-sql">SELECT id, category, ROW_NUMBER() OVER (PARTITION BY category ORDER BY id) AS category_id FROM article;</code>
Contoh:
<code class="language-sql">INSERT INTO article(category) VALUES ('stackoverflow');</code>
Keputusan:
<code>SELECT * FROM article WHERE category = 'stackoverflow'; +----+-----------+---------+ | id | category | category_id | +----+-----------+---------+ | 10 | stackoverflow | 1 | | 11 | stackoverflow | 2 | +----+-----------+---------+</code>
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!