sql >> Database >  >> RDS >> Mysql

MySQL bewering-achtige beperking

Dit ruikt zeker naar een BEFORE INSERT trigger op de tafel '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 ;

Dit zoekt in feite het huidige aantal gasten op, en als het al>=2 is, stelt het card_number in op NULL. Aangezien card_number NIET NULL is, zal dit de invoeging weigeren.

Getest en werkt voor mij op MySQL 5.1.41-3ubuntu12.10 (Ubuntu Lucid)




  1. Hoe opgeslagen procedures uit te schrijven naar bestanden?

  2. CONTROLEER BEPERKING van tekenreeks om alleen cijfers te bevatten. (Oracle-SQL)

  3. Hoe u de maand van een datum haalt in MySQL

  4. Dynamische SQL-query's maken naar een MySQL DB