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

チェック制約が機能しないmysql

    MySQLはチェック制約を強制しません。

    これは、SQL標準からの十分に文書化された逸脱です。 (初心者には予想外でしたが。)

    「チェック制約」を適用するためにMySQLデータベースが必要な場合は、適用をBEFORE INSERTにコーディングする必要があります。 およびBEFORE UPDATE トリガー。

    このメモ:

    MySQLリファレンスマニュアルのCREATE TABLEの下に埋め込まれています 構文。

    参照: https://dev.mysql.com/doc /refman/5.5/en/create-table.html

    ENUMに関する警告

    ENUM 「無効な」値の挿入を制限しません。無効な値は長さゼロの文字列に変換され、警告が発行されますが、エラーではありません。

    デモンストレーション:

    CREATE TABLE foo (gen ENUM('M','F'))
    
    INSERT INTO foo (gen) VALUES ('x')
    
    -- Warning Code : 1265
    -- Data truncated for column 'gen' at row 1
    
    SELECT gen, CHAR_LENGTH(gen) FROM foo;
    
    -- gen  CHAR_LENGTH(gen)  
    -- ---  ----------------
    --                     0
    


    1. デフォルトのトレースの削除–パート3

    2. DB内のすべてのスキーマを一覧表示するためのOracleSQLクエリ

    3. mysqlのループを使用して別のテーブルからデータを挿入します

    4. 長さ100000のタイプ文字variing(255)には値が長すぎます