Bagaimanakah kekangan boleh dilaksanakan untuk menyekat jadual pangkalan data yang hanya boleh dimiliki oleh satu rekod nilai medan "isDefault" khusus 1? Kekangan dikenakan pada subset rekod yang dikenal pasti oleh medan "FormID".
SQL Server 2008 dan ke atas menyediakan penyelesaian menggunakan penapisan unik indeks:
CREATE UNIQUE INDEX IX_TableName_FormID_isDefault ON TableName(FormID) WHERE isDefault = 1
Pertimbangkan jadual berikut struktur:
CREATE TABLE TableName( FormID INT NOT NULL, isDefault BIT NOT NULL )
Memasukkan berbilang rekod dengan "FormID" dan "isDefault" yang sama seperti 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).
Ralat ini secara berkesan menguatkuasakan kekangan, memastikan hanya satu rekod setiap "FormID" boleh menetapkan "isDefault" kepada 1.
(Sumber: https://technet.microsoft.com/en-us/library/cc280372.aspx)
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Hanya Satu Rekod Mempunyai isDefault = 1 setiap FormID dalam Jadual Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!