Điều này chắc chắn có mùi của một kích hoạt TRƯỚC KHI CHÈN trên bàn 'khách':
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 ;
Về cơ bản, điều này sẽ tìm kiếm số lượng khách hiện tại và nếu nó đã> =2, hãy đặt card_number thành NULL. Vì card_number được khai báo KHÔNG ĐẦY ĐỦ, điều này sẽ từ chối việc chèn.
Đã thử nghiệm và hoạt động cho tôi trên MySQL 5.1.41-3ubuntu12.10 (Ubuntu Lucid)