sql >> Base de Datos >  >> RDS >> Mysql

Restricción similar a una aserción de MySQL

Esto definitivamente huele a un activador ANTES DE INSERTAR en la mesa 'invitado':

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 ;

Básicamente, esto busca el recuento de invitados actual, y si ya es> =2 establece card_number en NULL. Dado que card_number se declara NOT NULL, esto rechazará la inserción.

Probado y funciona para mí en MySQL 5.1.41-3ubuntu12.10 (Ubuntu Lucid)