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

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-01 03:20:10245semak imbas

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

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!

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