Mysql
 sql >> база данни >  >> RDS >> Mysql

Уникално ограничение, което проверява две колони в MySQL

Можете да го направите с BEFORE задействайте по този начин

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);

Забележка: Тъй като използвате версия на MySQL, в която липсва SIGNAL номерът е да се наруши NOT NULL ограничение за една от колоните, когато са открити редове със същия адрес.

Ето SQLPiddle демонстрация. Декоментирайте един от последните изрази за вмъкване и щракнете върху Build Schema . Тези вмъквания няма да успеят.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Много-към-много Изберете

  2. Филтрирайте редове в колона въз основа на зададени правила в SQL

  3. Как да работи MySQL, нечувствителен към малки и малки букви и нечувствителен към акцент в UTF-8

  4. PHP Mysql се свързва между бази данни

  5. Производителност на REGEXP (сравнете с LIKE и =)