Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mencipta Indeks Unik pada Lajur Membenarkan Nilai NULL dalam Pelayan SQL?
Mencipta Indeks Unik pada Lajur Null
Walaupun terdapat salah tanggapan umum bahawa kekangan unik tidak boleh digunakan pada lajur yang membenarkan nilai NULL, sememangnya terdapat kaedah untuk mencapai ini dalam SQL Server 2005.
Pendekatan 1: Lihat dengan Indeks Unik
Pendekatan yang disebut dalam soalan menggunakan pandangan untuk mengecualikan NULL dan mencipta indeks unik pada paparan itu. Walaupun berkesan, penyelesaian ini menambah kerumitan dan overhed prestasi.
Pendekatan 2: Indeks Tertapis (SQL Server 2008 )
Memperkenalkan SQL Server 2008, indeks yang ditapis membolehkan anda menentukan klausa WHERE apabila mencipta indeks. Ini membolehkan penciptaan indeks unik pada lajur yang mungkin mengandungi NULL.
Sintaks:
CREATE UNIQUE INDEX AK_MyTable_Column1 ON MyTable (Column1) WHERE Column1 IS NOT NULL
Pendekatan 3: Penguatkuasaan Berasaskan Pencetus
Alternatif lain ialah melaksanakan pencetus yang menyemak keunikan setiap kali baris disisipkan atau dikemas kini. Walau bagaimanapun, pencetus boleh memberi kesan kepada prestasi, terutamanya pada jadual dengan kadar kemasukan/kemas kini yang tinggi.
Pelaksanaan:
CREATE TRIGGER MyTable_TRG_Unique ON MyTable AFTER INSERT OR UPDATE AS BEGIN IF EXISTS(SELECT 1 FROM MyTable WHERE Column1 = (SELECT Column1 FROM INSERTED)) BEGIN RAISERROR('Column1 must be unique.', 16, 1); -- Handle error as needed END END
Pertimbangkan kebaikan dan keburukan setiap pendekatan berdasarkan keperluan khusus dan kekangan prestasi permohonan anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Indeks Unik pada Lajur Membenarkan Nilai NULL dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!