SQL Server 2005: Melaksanakan Keunikan Bersyarat untuk Subset Lajur
Mewujudkan kekangan unik yang digunakan hanya dalam keadaan tertentu dalam SQL Server 2005 memberikan cabaran. Walaupun pencetus menawarkan penyelesaian, ia boleh memberi kesan kepada prestasi. Pendekatan yang lebih cekap menggunakan indeks yang ditapis.
Indeks Ditapis: Penyelesaian Dinamik untuk Kekangan Bersyarat
Indeks yang ditapis membenarkan pengindeksan subset data tertentu, menyediakan mekanisme yang berkuasa untuk melaksanakan kekangan bersyarat melalui predikat penapis.
Mencipta Kekangan Unik Bersyarat menggunakan Indeks Ditapis
Pernyataan T-SQL berikut menunjukkan cara mencipta indeks unik dengan penapis:
<code class="language-sql">CREATE UNIQUE INDEX MyIndex ON MyTable (ID) WHERE RecordStatus = 1;</code>
Ini mewujudkan kekangan unik pada lajur ID
, tetapi hanya apabila RecordStatus
ialah 1. Sebarang percubaan untuk melanggar keunikan bersyarat ini akan menghasilkan ralat.
Contoh Mesej Ralat:
Percubaan untuk memasukkan nilai ID
pendua apabila RecordStatus
ialah 1 akan menghasilkan:
<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>
Ringkasan
Indeks yang ditapis menawarkan kaedah yang cekap dan elegan untuk mewujudkan kekangan unik bersyarat dalam SQL Server 2005, mengelakkan overhed prestasi yang sering dikaitkan dengan penyelesaian berasaskan pencetus. Penggunaan predikat penapis membolehkan kawalan dinamik ke atas keunikan dalam subset data tertentu.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Kekangan Unik Bersyarat dalam SQL Server 2005?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!