sql >> Database teknologi >  >> RDS >> Mysql

MySQL påstandslignende begrænsning

Dette lugter bestemt af en FØR INSERT-udløser på bordet '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 ;

Dette slår grundlæggende det aktuelle antal gæster op, og hvis det allerede er>=2 sætter kortnummer til NULL. Da kortnummer er erklæret IKKE NULL, vil dette afvise indsættelsen.

Testet og virker for mig på MySQL 5.1.41-3ubuntu12.10 (Ubuntu Lucid)




  1. Sådan deaktiveres Change Data Capture (CDC) på en database i SQL Server - SQL Server Tutorial

  2. I Flask-migrer ValueError:ugyldig interpolationssyntaks i forbindelsesstreng ved position 15

  3. Oracle SQL, sammenkæd flere kolonner + tilføj tekst

  4. Fremstil DISTINCT-værdier i STRING_AGG