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

空ではない/必須としてのMysql列制約

    空白(NULLではなく空の文字列)は必要ないと思います )テーブルで許可される値。

    通常、それがCHECKです。 の制約。あなたは次のようなことをします

    CREATE TABLE
            mytable
            (
            myfield NOT NULL VARCHAR(200),
            CHECK(myfield > '')
            )
    

    ただし、MySQL 制約を解析しますが、強制しません。空の値を挿入することは引き続き許可されています。

    これを回避するには、BEFORE INSERTを作成します 空白の値を挿入しようとすると、シグナルをトリガーして発生させます:

    CREATE TRIGGER
            tr_mytable_bi
    BEFORE INSERT
    ON      mytable
    FOR EACH ROW
    BEGIN
            IF NEW.myfield = '' THEN
                    SIGNAL SQLSTATE '45001' SET MESSAGE_TEXT = 'Blank value on mytable.myfield';
            END IF;
    END;
    

    BEFORE UPDATEでも同じことを行います 空白の値への更新も禁止したい場合。



    1. レシピに材料が含まれていることを確認する-MYSQL

    2. メールアドレスを含むMySQLInnoDB全文検索

    3. 複数のテーブルへのデータの挿入PHPMySQL

    4. 多くのオプションパラメータを処理するJavaSpringREST API