プロが教えるわが家の防犯対策術!

テーブルの作成時にカラムに入力される文字を'a'または'b'のどちらかにしたいのですが、
そのようなことは可能でしょうか?
可能ならばどのような記述になるのか教えてください。

create table test (
id int,
name varchar(1) ← ここに挿入される文字をaかbにしたい
);

A 回答 (2件)

name列に格納可能な値を、'a'か'b'だけに限定したいということでしょうか?



RDBMSは選択の通り、MySQLでしょうか?
MySQL 8.0.16でようやく、標準SQL準拠のCHECK制約が実装されました。
表定義で次のように指定します。

name VARCHAR(1) CHECK(name IN('a','b'))

MySQL 8.0.16より前の場合は、MySQL独自機能のENUMを使う方法があります。
表定義で次のように指定します。

name ENUM('a','b')

VARCHARなどのデータ型の指定がないので、注意してください。

NULLも許したくない場合は、
NOT NULL
も指定してください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
MySQL 8.0.16より前なのでENUM型が良さそうです。

お礼日時:2022/08/28 08:44

MySQL 8.0.16より前でもCHECK句は指定できますが、構文チェックするだけで機能としては動作しないので注意してください。

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2022/08/28 08:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す