sql >> データベース >  >> RDS >> Mysql

MySQLアサーションのような制約

    これは間違いなく、テーブル'guest'のBEFOREINSERTトリガーのにおいがします:

    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 ;
    

    これは基本的に現在のゲスト数を検索し、すでに> =2の場合は、card_numberをNULLに設定します。 card_numberはNOTNULLとして宣言されているため、挿入は拒否されます。

    MySQL 5.1.41-3ubuntu12.10(Ubuntu Lucid)でテストされ、動作します




    1. sql if in insert statement without select

    2. 式インデックスの有用性について

    3. 次回営業している時間を見つけましょう。 mysql時間の計算

    4. スプレッドシートとデータベース:切り替える時が来ましたか?パート1