sql >> Databáze >  >> RDS >> Mysql

Jedinečné omezení, které kontroluje dva sloupce v MySQL

Můžete to udělat pomocí BEFORE spustit tímto způsobem

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

Poznámka: Protože používáte verzi MySQL, která postrádá SIGNAL trik je v porušení NOT NULL omezení na jeden ze sloupců, když byly nalezeny řádky se stejnou adresou.

Zde je SQLFiddle demo. Odkomentujte jeden z posledních příkazů vložení a klikněte na Build Schema . Tyto vložky nebudou úspěšné.




  1. Nahrazení řetězce jiným řetězcem v SQL Server (T-SQL)

  2. Duplikovat řádky v tabulce primárního klíče.

  3. Předejte proměnnou do spouštěče

  4. Správně persistované vypočítané sloupce