2016-05-07 6 views
0

私はそれを受け入れる性別ためのMまたはF以外の値を持つ行を作成するときに、しかし、MまたはFSQLデータベースで制約を使用するには?

CREATE TABLE IF NOT EXISTS Coach (
    Address varchar(255), 
    Citizenship varchar(50), 
    DateOfBirth varchar(15), 
    Email varchar(255), 
    Emailconfidential tinyint(1), 
    Gender varchar(1) check (Gender = "M" or Gender = "F"), 
    Name varchar(50), 
    Password varchar(100) NOT NULL, 
    Phonenumber varchar(30), 
    Sport varchar(25), 
    Verified tinyint(1), 
    Views varchar(100), 
    primary key(Email) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

に受け入れるだけにジェンダーの列に制約を追加しようとしています。 MまたはF以外の入力を受け付けないようにデータベースを取得するにはどうすればよいですか?

+0

http://dba.stackexchange.com/questions/9662/check-constraint-does-not-workの – OldProgrammer

+2

可能な重複[MySQLでCHECK制約が動作していない](http://stackoverflow.com/質問/ 2115497/check-constraint-in-mysql-is-not-working) – Nasreddine

+0

["他のストレージエンジンでは、MySQLサーバはCREATのFOREIGN KEYとREFERENCES構文を解析し無視しますE TABLEステートメント。 ** CHECK節は解析されますが、すべてのストレージエンジンで無視されます** "](http://dev.mysql.com/doc/refman/5.7/en/create-table.html) – Nasreddine

答えて

0

comnentsでは、mysqlがチェック制約を強制しないことが指摘されています。しかし、この特定の問題がenum data typeを使用してチェック制約なしに解決することができる。

ENUMは、テーブル作成時にカラムの仕様に明示的に列挙された許容値のリストから選択された値を持つ文字列オブジェクトであります

関連する問題