2011-02-10 14 views
0

私はMySQLを使用しています5.1.36 chk1という名前の制約を削除しようとしていますが、MySQLは構文上のエラーを報告します。私はそれを見てもそれを見つけることができません。エラーは何ですか?MySQL Drop Constraint構文エラー

mysql> create database house; 
Query OK, 1 row affected (0.01 sec) 
mysql> use house; 
Database changed 
mysql> create table member(age integer); 
Query OK, 0 rows affected (0.05 sec) 

mysql> alter table member add constraint chk1 check(age>0); 
Query OK, 0 rows affected (0.08 sec) 
Records: 0 Duplicates: 0 Warnings: 0 

mysql> alter table member drop constraint chk1; 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint chk1' at line 1 

mysql> alter table member drop check chk1; 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'check chk1' at line 1 

答えて

2

チェック制約は解析されますが、Mysqlでは無視されます。だからあなたはそれを削除する必要はありません。 enumまたはトリガーを使用して、必要な機能を実装できます。あなたの場合はageunsignedに変更することもできます。

+0

enumまたはトリガーなどの回避策を使用せずにこの制約を強制する方法はありますか? –

+0

私の理解では、年齢を 'int unsigned'または' SMALLINT unsigned'に変更すると、この場合ジョブが実行されます。同じ場合、列挙型の代わりに「外部キー」が機能します。一般的に - いいえ、あなたは任意のチェック制約を強制することはできません。 – a1ex07

+0

'check(age> 40)'のような制約があったらどうしたらいいですか? –