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

MySQL外部キー制約-整数列

    NULLを受け入れるように外部キーを設定することをお勧めします 値を指定し、NULLを使用します 0の代わりに 値。

    概念的には、NULL 不明な値がないを意味します 。あなたの行が「値を持っていない/必要としない」場合、私はNULLを信じています 完全にフィットします。

    はい、NULL 値は外部キーの制約を破ることはありません。

    基本的な例を作成しましょう:

    CREATE TABLE parents (
       id      int PRIMARY KEY, 
       value   int
    ) ENGINE = INNODB;
    
    CREATE TABLE children (
       id         int PRIMARY KEY, 
       parent_id  int,
       FOREIGN KEY (parent_id) REFERENCES parent (id)
    ) ENGINE = INNODB;
    

    次に:

    INSERT INTO parents VALUES (1, 100);
    Query OK, 1 row affected (0.00 sec)
    
    INSERT INTO children VALUES (1, 1);
    Query OK, 1 row affected (0.00 sec)
    
    INSERT INTO children VALUES (2, 0);
    ERROR 1452 (23000): A foreign key constraint fails
    
    INSERT INTO children VALUES (2, NULL);
    Query OK, 1 row affected (0.00 sec)
    
    SELECT * FROM children;
    +----+-----------+
    | id | parent_id |
    +----+-----------+
    |  1 |         1 |
    |  2 |      NULL |
    +----+-----------+
    2 rows in set (0.01 sec)
    


    1. MysqlJSONタイプのSpringデータ

    2. mysqlのパフォーマンス間のパフォーマンスは何ですか..?

    3. 列MySQLを手動で自動インクリメントします

    4. Hibernate_sequenceテーブルが生成されます