Kekangan untuk Satu Rekod Ditandai sebagai Lalai
Bagaimanakah kekangan boleh ditetapkan di atas meja supaya hanya satu daripada rekod mempunyai medan bit isDefault ditetapkan kepada 1?
Penyelesaian: Menggunakan Indeks Penapis Unik
Untuk SQL Server 2008 atau lebih baru, indeks yang ditapis unik boleh digunakan:
CREATE UNIQUE INDEX IX_TableName_FormID_isDefault ON TableName(FormID) WHERE isDefault = 1
di mana jadual ditakrifkan seperti berikut:
CREATE TABLE TableName( FormID INT NOT NULL, isDefault BIT NOT NULL )
Memasukkan berbilang baris dengan FormID dan isDefault yang sama ditetapkan kepada 1 akan mengakibatkan ralat berikut:
Cannot insert duplicate key row in object 'dbo.TableName' with unique index 'IX_TableName_FormID_isDefault'. The duplicate key value is (1).
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Hanya Satu Rekod Mempunyai isDefault = 1 dalam Jadual Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!