Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Ograniczenie podobne do asercji MySQL

To zdecydowanie pachnie wyzwalaczem PRZED WSTAWIENIEM na stole „gość”:

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 ;

To po prostu sprawdza aktualną liczbę gości i jeśli jest już>=2, ustawia numer_karty na NULL. Ponieważ numer karty jest zadeklarowany jako NOT NULL, spowoduje to odrzucenie wstawiania.

Przetestowane i działa dla mnie na MySQL 5.1.41-3ubuntu12.10 (Ubuntu Lucid)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Identyfikatory MySQL Select, które występują w różnych wierszach z wieloma określonymi wartościami dla kolumny

  2. Jak połączyć się z MySQL za pomocą UTF8 w skrypcie perla?

  3. Jak wstępnie załadować tabele do puli buforów INNODB za pomocą MySQL?

  4. Jakie są realne warstwy abstrakcji bazy danych dla Pythona?

  5. Używasz symbolu zastępczego ? w zapytaniu Go mySql dla czegokolwiek innego niż int