Rumah > pangkalan data > tutorial mysql > Bagaimana untuk menguatkuasakan keunikan merentasi pelbagai lajur dalam jadual SQL?

Bagaimana untuk menguatkuasakan keunikan merentasi pelbagai lajur dalam jadual SQL?

Barbara Streisand
Lepaskan: 2025-01-24 23:47:09
asal
448 orang telah melayarinya

How to Enforce Uniqueness Across Multiple Columns in a SQL Table?

Keunikan lajur berganda

pernyataan soalan

Terdapat rekod berulang dalam jadual anda.

penyelesaian

menggunakan kekangan unik atau indeks:

selepas memadam rekod berulang:

atau

Gunakan dan bukannya mencetuskan:

<code class="language-sql">ALTER TABLE dbo.yourtablename ADD CONSTRAINT uq_yourtablename UNIQUE(column1, column2);</code>
Salin selepas log masuk

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

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

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