sql >> Databáze >  >> RDS >> Mysql

Omezení podobné tvrzením MySQL

Toto rozhodně zavání spouští BEFORE INSERT na stole 'host':

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 ;

Toto v podstatě vyhledá aktuální počet hostů, a pokud je již>=2, nastaví číslo_karty na NULL. Vzhledem k tomu, že číslo_karty je deklarováno jako NOT NULL, vložení odmítne.

Testováno a funguje mi na MySQL 5.1.41-3ubuntu12.10 (Ubuntu Lucid)




  1. 4 Předdefinované metody konverze dat SQL a případy použití

  2. Použijte sphinx vs MySQL na dotaz bez textového vyhledávání

  3. Jak vytvořit komplexní virtuální sloupec ve výmluvném modelu?

  4. Událost Mysql nefunguje