Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Batasan unik yang memeriksa dua kolom di MySQL

Anda dapat melakukannya dengan BEFORE memicu dengan cara ini

CREATE TRIGGER tg_bi_mytable
BEFORE INSERT ON mytable
FOR EACH ROW
  SET NEW.address1 = IF(EXISTS
     (
       SELECT * 
        FROM mytable 
       WHERE address1 IN(NEW.address1, NEW.address2) 
          OR address2 IN(NEW.address1, NEW.address2)
     ), NULL, NEW.address1);

Catatan: Karena Anda menggunakan versi MySQL yang tidak memiliki SIGNAL triknya adalah melanggar NOT NULL kendala pada salah satu kolom ketika baris dengan alamat yang sama telah ditemukan.

Ini SQLFiddle demo. Batalkan komentar salah satu pernyataan sisipan terakhir dan klik Build Schema . Sisipan ini tidak akan berhasil.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DATETIME VS INT untuk menyimpan waktu?

  2. MYSQL Docker '[2002] Koneksi ditolak'

  3. MySQL UNION 2 query yang berisi ORDER BYs

  4. Cara Memformat Angka di MySQL

  5. Tampilkan catatan dari sekarang () hingga 7 hari berikutnya di mysql