Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Assertion-ähnliche Einschränkung

Das riecht definitiv nach einem BEFORE INSERT-Trigger auf der Tabelle '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 ;

Dies schlägt im Grunde die aktuelle Gästezahl nach und setzt, wenn sie bereits>=2 ist, card_number auf NULL. Da card_number als NOT NULL deklariert ist, wird dies die Einfügung zurückweisen.

Getestet und funktioniert für mich auf MySQL 5.1.41-3ubuntu12.10 (Ubuntu Lucid)