sql >> Databasteknik >  >> RDS >> Mysql

MySQL påstående-liknande begränsning

Detta luktar definitivt av en BEFORE INSERT-utlösare på bordets "gäst":

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 ;

Detta slår i princip upp det aktuella antalet gäster, och om det redan är>=2 ställs kortnummer till NULL. Eftersom card_number deklareras INTE NULL, kommer detta att avvisa infogningen.

Testat och fungerar för mig på MySQL 5.1.41-3ubuntu12.10 (Ubuntu Lucid)




  1. mysql användarregistrering räknas mellan grupper

  2. Hur får man effektiv Sql Server-deadlock-hantering i C# med ADO?

  3. Hur kan jag ansluta till MySQL på en WAMP-server?

  4. städer och avstånd efter latitud-longitud