Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memastikan Hanya Satu Rekod Mempunyai isDefault = 1 dalam Jadual Pelayan SQL?
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!