MySQLのフィールドに挿入できる値に制限を付ける方法について解説します。数値の値に制限を付けたい場合は CHECK、値の重複を避けたい場合には UNIQUE を使います。
目次
数値の値に制限を付ける CHECK
挿入できる数値の値を一定以上、一定以下、あるいはその両方の条件で制限したい場合は、次のようにカラムを定義する際に CHECK を付けます。
-- titlesという名前のテーブルがあれば削除 DROP TABLE IF EXISTS titles; -- titlesという名前のテーブルを作成 CREATE TABLE titles ( author_id INT CHECK (author_id > 0 AND author_id <=5), post_title VARCHAR(50) ); -- レコードを挿入 INSERT INTO titles (author_id, post_title) VALUES (1, 'MySQLとは'), (8, 'SQLとはなにか'); SELECT * FROM titles;
ここでは author_id に「0より大きく、5以下」という制限を付けました。
その後、author_id に 8 を挿入しようとしています。
チェックの制約に反するとしてエラーで弾いてくれます。
重複した値を弾く UNIQUE
次は値の重複を制限してみましょう。カラムを定義する際に UNIQUE を付けます。
-- titlesという名前のテーブルがあれば削除 DROP TABLE IF EXISTS titles; -- titlesという名前のテーブルを作成 CREATE TABLE titles ( author_id INT, post_title VARCHAR(50) UNIQUE ); -- レコードを挿入 INSERT INTO titles (author_id, post_title) VALUES (1, 'MySQLとは'), (2, 'SQLとはなにか'), (3, 'MySQLとは'); SELECT * FROM titles;
post_title カラムのフィールドに挿入される値の重複を制限してみました。
その後、post_title に MySQLとは という重複する値を挿入しようとしています。
ユニークの制約に反するとしてエラーで弾いてくれます。