Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menguatkuasakan Kekangan Unik Bersyarat dalam Pelayan SQL Tanpa Menggunakan Pencetus?
Mencapai Kekangan Unik Bersyarat dalam Pelayan SQL: Pendekatan Tanpa Pencetus
Mengekalkan integriti data selalunya memerlukan kekangan unik yang digunakan secara terpilih pada subset data. Walaupun pencetus adalah penyelesaian biasa, SQL Server menyediakan kaedah yang lebih elegan menggunakan indeks yang ditapis.
Memanfaatkan Indeks Ditapis untuk Keunikan Bersyarat
Indeks yang ditapis mengindeks hanya sebahagian daripada baris jadual, ditentukan oleh keadaan penapis. Ini membenarkan kekangan unik bersyarat.
Pertimbangkan senario yang memerlukan keunikan untuk (ID, RecordStatus) hanya apabila RecordStatus ialah 1. Penyelesaiannya adalah mudah:
<code class="language-sql">CREATE UNIQUE INDEX MyIndex ON MyTable(ID) WHERE RecordStatus = 1;</code>
Indeks ini hanya mengindeks baris di mana RecordStatus = 1
, sekali gus menguatkuasakan keunikan untuk subset ini. Melanggar kekangan ini mengakibatkan ralat:
<code>Msg 2601, Level 14, State 1, Line 13 Cannot insert duplicate key row in object 'dbo.MyTable' with unique index 'MyIndex'. The duplicate key value is (9999).</code>
Pertimbangan Penting
Indeks yang ditapis telah diperkenalkan dalam SQL Server 2008. Untuk versi terdahulu, pencetus atau gabungan kekangan unik dan teknik versi baris adalah alternatif yang diperlukan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menguatkuasakan Kekangan Unik Bersyarat dalam Pelayan SQL Tanpa Menggunakan Pencetus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!