Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Unikalne ograniczenie, które sprawdza dwie kolumny w MySQL

Możesz to zrobić za pomocą BEFORE wyzwalaj w ten sposób

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

Uwaga: Ponieważ używasz wersji MySQL, w której brakuje SIGNAL sztuczka polega na naruszeniu NOT NULL ograniczenie do jednej z kolumn, gdy zostaną znalezione wiersze o tym samym adresie.

Oto SQLFiddle próbny. Odkomentuj jedną z ostatnich instrukcji wstawiania i kliknij Build Schema . Te wstawki się nie powiodą.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działają PEŁNOTEKSTOWE INDEKSY w wielu kolumnach?

  2. MYSQL:Jak skopiować cały wiersz z jednej tabeli do drugiej w mysql, gdy druga tabela ma jedną dodatkową kolumnę?

  3. Jak stworzyć sekwencję w MySQL

  4. Brak połączenia z bazą danych Mysql i mysql.sock

  5. Pole formularza HTML nie wypełnia wartości PHP po pierwszej spacji