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
Lepaskan: 2025-01-04 01:26:10
asal
301 orang telah melayarinya

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

Pertimbangkan jadual berikut struktur:

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

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

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!

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