Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Restrição semelhante a asserção do MySQL


Isso definitivamente cheira a um gatilho BEFORE INSERT na mesa 'guest':
DELIMITER $$
DROP TRIGGER IF EXISTS check_guest_count $$
CREATE TRIGGER check_guest_count BEFORE INSERT ON `guest`
  FOR EACH ROW BEGIN
    DECLARE numguests int DEFAULT 0;
    SELECT COUNT(*) INTO numguests FROM `guest` WHERE card_number=NEW.card_number;
    if numguests>=2 THEN
      SET NEW.card_number = NULL;
    END IF;
  END;
$$
DELIMITER ;

Isso basicamente procura a contagem atual de convidados e, se já estiver> =2, define o número_do_cartão como NULL. Como o número_do_cartão é declarado NOT NULL, isso rejeitará a inserção.

Testado e funciona para mim no MySQL 5.1.41-3ubuntu12.10 (Ubuntu Lucid)