Pastikan gabungan unik pelbagai lajur adalah penting untuk mengekalkan integriti data. Dalam SQL Server, anda boleh mencapai tujuan ini dengan mencapai kekangan yang unik atau indeks unik pada lajur yang ditentukan.
Permintaan untuk satu -satunya kekangan
Contoh yang disediakan oleh menekankan keunikan personnumber dan kombinasi medan aktif dalam jadual orang. Ini boleh menghalang pelbagai orang memasukkan beberapa kali, yang masing -masing dibenarkan hanya satu rekod.
Tambah kekangan yang unik
Untuk menguatkuasakan had ini, anda boleh menggunakan sintaks berikut untuk menambah kekangan yang unik:
atau, anda boleh membuat indeks unik:
<code class="language-sql">ALTER TABLE dbo.yourtablename ADD CONSTRAINT uq_yourtablename UNIQUE(column1, column2);</code>
Mengekalkan kecekapan
<code class="language-sql">CREATE UNIQUE INDEX uq_yourtablename ON dbo.yourtablename(column1, column2);</code>
Apabila kekangan yang unik dilaksanakan, adalah perlu untuk menimbang kesan prestasi. Walaupun mereka memastikan integriti data, jika mereka sering melanggar kekangan, mereka juga boleh membawa kepada perbelanjaan operasi sisipan. Dalam kes ini, pertimbangkan untuk menggunakan bukannya pencetus untuk memintas dan mencegah pelaksanaan dari penyisipan tidak sah.
ingat, jika pencetus menghalang operasi penyisipan, sila berikan maklum balas kepada pengguna untuk mengelakkan ketidakpastian yang berpotensi.
Contoh
<code class="language-sql">CREATE TRIGGER dbo.BlockDuplicatesYourTable ON dbo.YourTable INSTEAD OF INSERT AS BEGIN SET NOCOUNT ON; IF NOT EXISTS (SELECT 1 FROM inserted AS i INNER JOIN dbo.YourTable AS t ON i.column1 = t.column1 AND i.column2 = t.column2 ) BEGIN INSERT dbo.YourTable(column1, column2, ...) SELECT column1, column2, ... FROM inserted; END ELSE BEGIN PRINT '插入操作被阻止,因为该组合已存在。'; -- 提供用户反馈 END END GO</code>
Penggunaan penyelesaian ini kepada contoh yang disediakan akan mendapat struktur jadual berikut:
kini dilarang memasukkan rekod berulang berdasarkan gabungan personnumber dan aktif, seperti yang ditunjukkan dalam contoh berikut:
Atas ialah kandungan terperinci Bagaimana untuk menguatkuasakan kekangan yang unik pada pelbagai lajur dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!