Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memastikan Hanya Satu Rekod Mempunyai isDefault = 1 setiap FormID dalam Jadual Pelayan SQL?

Bagaimana untuk Memastikan Hanya Satu Rekod Mempunyai isDefault = 1 setiap FormID dalam Jadual Pelayan SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-04 01:26:10302semak imbas

How to Ensure Only One Record Has isDefault = 1 per FormID in a SQL Server Table?

Memastikan Rekod Lalai Tunggal dalam Jadual Pangkalan Data

Masalah

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".

Penyelesaian: Indeks Disaring Unik untuk SQL Server 2008 atau Lebih Tinggi

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn