Rumah >pangkalan data >tutorial mysql >Bagaimana untuk menguatkuasakan keunikan merentasi pelbagai lajur dalam jadual SQL?
Keunikan lajur berganda
penyelesaian
menggunakan kekangan unik atau indeks:atau
Gunakan dan bukannya mencetuskan:
<code class="language-sql">ALTER TABLE dbo.yourtablename ADD CONSTRAINT uq_yourtablename UNIQUE(column1, column2);</code>
untuk mengelakkan keabnormalan dan menangani peperiksaan unik dalam pangkalan data:
<code class="language-sql">CREATE UNIQUE INDEX uq_yourtablename ON dbo.yourtablename(column1, column2);</code>
Contoh mari kita gunakan nama medan yang disediakan dalam masalah:
Percubaan penyisipan terakhir akan mengembalikan kesilapan untuk memastikan keunikan.
<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>Output Revied ini mengekalkan imej asal dan menggunakan lebih banyak bahasa semulajadi sambil mengekalkan ketepatan teknikal teks asal
Atas ialah kandungan terperinci Bagaimana untuk menguatkuasakan keunikan merentasi pelbagai lajur dalam jadual SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!