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