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
Lepaskan: 2025-01-01 03:20:10
asal
199 orang telah melayarinya

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
Salin selepas log masuk

di mana jadual ditakrifkan seperti berikut:

CREATE TABLE TableName(
    FormID INT NOT NULL,
    isDefault BIT NOT NULL
)
Salin selepas log masuk

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).
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan