Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menguatkuasakan Bendera Lalai Unik dalam Rekod Pangkalan Data?

Bagaimana untuk Menguatkuasakan Bendera Lalai Unik dalam Rekod Pangkalan Data?

Patricia Arquette
Patricia Arquetteasal
2024-12-30 01:31:09479semak imbas

How to Enforce a Unique Default Flag in Database Records?

Menguatkuasakan Bendera Lalai Unik dalam Rekod Pangkalan Data

Dalam pengurusan pangkalan data, selalunya perlu memastikan bahawa hanya satu rekod dalam set data tertentu boleh ditandakan sebagai lalai. Sebagai contoh, sistem mungkin mempunyai koleksi rekod pelanggan di mana hanya seorang pelanggan ditetapkan sebagai lalai untuk tujuan pengebilan. Untuk menangani keperluan ini, kekangan pangkalan data boleh dilaksanakan.

Menggunakan Indeks Penapis Unik

Pada SQL Server 2008 atau lebih baru, penggunaan indeks yang ditapis unik menyediakan penyelesaian yang cekap :

CREATE UNIQUE INDEX IX_TableName_FormID_isDefault
ON TableName(FormID)
WHERE isDefault = 1

Dalam senario ini, struktur jadual termasuk:

CREATE TABLE TableName(
    FormID INT NOT NULL,
    isDefault BIT NOT NULL
)

Indeks ini memastikan bahawa untuk mana-mana FormID tertentu, hanya satu rekod boleh menetapkan bendera isDefault kepada 1. Jika berbilang rekod dengan percubaan FormID yang sama untuk menetapkan bendera ini, ralat akan berlaku , seperti:

Tidak boleh memasukkan baris kunci pendua dalam objek 'dbo.TableName' dengan indeks unik 'IX_TableName_FormID_isDefault'. Nilai kunci pendua ialah (1).

Dengan memanfaatkan indeks yang ditapis unik, anda boleh melaksanakan kekangan dengan berkesan untuk memastikan bahawa hanya satu rekod bagi setiap kriteria yang ditentukan (dalam kes ini, FormID) boleh ditetapkan sebagai lalai.

Atas ialah kandungan terperinci Bagaimana untuk Menguatkuasakan Bendera Lalai Unik dalam Rekod Pangkalan Data?. 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