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
158 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!

sumber:php.cn
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