1

最初のmysqlスクリプトを作成していて、列'type'のテーブルを作成したいと思います。可能な値は「XYZ」と「ABC」の2つだけである必要があるため、次のようにしました。

CREATE TABLE table(
type varchar(12) NOT NULL,
CHECK (type = 'XYZ' or type = 'ABC');

しかし、234や「John」などの値をテストして挿入すると、機能し、エラーは返されません。値「ジョン」を挿入するべきではないと思いますよね?

4

3 に答える 3

2

MySQLはチェック制約をサポートしていません。

The CHECK clause is parsed but ignored by all storage engines.

そのため、このcheckステートメントはエラーを発生させませんが、暗黙のうちに無視されます。

于 2012-11-24T16:55:25.473 に答える
1

enum代わりに次を使用します。

CREATE TABLE test( 
  type ENUM('XYZ', 'ABC')
);

この SQL フィドルを参照してください。挿入を 'John' に変更してみると、エラーが発生します。

于 2012-11-24T16:56:22.373 に答える
0

MYSQLにはチェックがないようです....

http://bugs.mysql.com/bug.php?id=25660

http://blog.christosoft.de/2012/08/mysql-check-constraint/

http://forums.mysql.com/read.php?136,572271,572603#msg-572603

トリガーを試すことができます。

于 2012-11-24T17:06:17.083 に答える