Kekangan Unik Bukan NULL pada Lajur Boleh NULL
Selalunya wajar untuk menguatkuasakan keunikan pada lajur sambil membenarkan nilai nol. Walau bagaimanapun, mencipta indeks unik pada lajur NULLable dalam SQL Server 2005 boleh mencabar.
Penyelesaian Semasa
Satu penyelesaian biasa ialah mencipta indeks unik pada sesuatu yang terwujud. paparan yang mengecualikan nilai nol:
CREATE VIEW vw_unq WITH SCHEMABINDING AS SELECT Column1 FROM MyTable WHERE Column1 IS NOT NULL CREATE UNIQUE CLUSTERED INDEX unq_idx ON vw_unq (Column1)
Lebih baik Alternatif
SQL Server 2008 memperkenalkan indeks yang ditapis, yang menyediakan penyelesaian yang lebih baik:
CREATE UNIQUE INDEX AK_MyTable_Column1 ON MyTable (Column1) WHERE Column1 IS NOT NULL
Indeks ini membenarkan nilai nol sambil menguatkuasakan keunikan pada nilai bukan nol.
Pilihan Tambahan: Pencetus
Alternatif lain ialah mencipta pencetus untuk menyemak keunikan semasa operasi sisipan dan kemas kini:
CREATE TRIGGER trg_MyTable_CheckUnique ON MyTable AFTER INSERT, UPDATE AS BEGIN IF EXISTS(SELECT * FROM MyTable WHERE Column1 = NEW.Column1 AND Column1 IS NOT NULL) BEGIN RAISERROR('Duplicate value for Column1.', 16, 1) END END
Walau bagaimanapun, pencetus boleh menjejaskan prestasi, terutamanya pada sistem konkurensi tinggi.
Atas ialah kandungan terperinci Bagaimana untuk Menguatkuasakan Kekangan Unik pada Lajur Boleh Nullable dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!