Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menguatkuasakan Keunikan Bersyarat dalam Pelayan SQL?

Bagaimanakah Saya Boleh Menguatkuasakan Keunikan Bersyarat dalam Pelayan SQL?

Patricia Arquette
Lepaskan: 2025-01-10 08:17:40
asal
424 orang telah melayarinya

How Can I Enforce Conditional Uniqueness in SQL Server?

Melaksanakan Kekangan Unik Bersyarat dalam Pelayan SQL

Kekangan unik SQL Server menghalang entri pendua merentas lajur tertentu. Tetapi bagaimana anda menguatkuasakan keunikan hanya dalam keadaan tertentu? Penyelesaiannya terletak pada penggunaan indeks yang ditapis.

Menurut dokumentasi SQL Server, indeks yang ditapis ialah indeks bukan kelompok yang mengindeks hanya subset baris jadual, ditakrifkan oleh predikat penapis.

Ciri ini membolehkan anda menggabungkan indeks unik dengan penapis bersyarat untuk menguatkuasakan keunikan secara terpilih. Pertimbangkan jadual:

<code class="language-sql">Table(ID, Name, RecordStatus)</code>
Salin selepas log masuk

Di mana RecordStatus boleh menjadi 1 (aktif) atau 2 (dipadamkan). Untuk memastikan nilai ID unik hanya apabila RecordStatus ialah 1, anda akan membuat indeks yang ditapis:

<code class="language-sql">CREATE UNIQUE INDEX MyIndex
ON MyTable(ID)
WHERE RecordStatus = 1;</code>
Salin selepas log masuk

Ini menguatkuasakan keunikan pada ID hanya untuk rekod aktif (di mana RecordStatus = 1). Percubaan untuk memasukkan pendua ID dengan RecordStatus = 1 akan mengakibatkan ralat:

<code>Cannot insert duplicate key row in object 'MyTable' with unique index 'MyIndex'. The duplicate key value is (9999).</code>
Salin selepas log masuk

Adalah penting untuk diingat bahawa indeks yang ditapis telah diperkenalkan dalam SQL Server 2008. Untuk versi terdahulu (seperti SQL Server 2005), pendekatan alternatif seperti pencetus diperlukan untuk mencapai keunikan bersyarat.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menguatkuasakan Keunikan Bersyarat dalam Pelayan SQL?. 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