scoreカラムに1から100までの整数しか入らないようにするには
どうしたらいいですか?
MySQLのバージョンは、5.0.51 です。
以下の文は、なんのエラーもなく、INSERTされてしまいます。
CREATE TABLE scores (
score INT NOT NULL,
CHECK ( score BETWEEN 1 AND 100 )
) ENGINE = InnoDB;
INSERT INTO scores (score) VALUES (1000);
どう書けばいいのでしょうか?
もしくは、MySQLのCHECK制約について詳しく書かれたページはないでしょうか?
No.1ベストアンサー
- 回答日時:
MySQLのバージョン5.0.51ではどうなのでしょうか。
以下のページを参考にしてみてください。
http://www.buena-idea.net/~hironobu/mysql/m-1-02 …
注1: 現在のところ、整合性(CHECK)制約はサポートされていません。
おっと、そうだったんですね・・・。
私が見ていたリファレンスはよく見ると、5.1 でした。残念です。
http://dev.mysql.com/doc/refman/5.1/ja/create-ta …
どうもありがとうございました。
(サポートしていないなら、エラーメッセージを返して欲しいですね。)
No.3
- 回答日時:
MySQLは、「標準SQL準拠」や「他のRDBMSとの文法上の互換性維持」のため、「文法エラーにはならないが、機能は働かない」といったパターンがあります。
CHECKもそうですし、例えば「primary key(c1 asc,c2 desc)」といったインデクス構成列の昇順と降順の混在も、エラーにはならないですが、実際はすべて昇順で定義されたりします。
ありがとうございます。
> 文法エラーにはならないが、機能は働かない
いちばん、困りますよね。やはりそうだったんですか。
今回は、1~100までの値を持った別テーブルを作って、
外部キーでそこを参照させる形をとりました。
ありがとうございました。
No.2
- 回答日時:
MySQLは、文法的に合ってればできないことを指定しても文句を言わない傾向がありますね。
CHECK制約は効かなくても、5.0でもトリガーで実現はできます。
面倒ですが・・・
参考URL:http://dev.mysql.com/doc/refman/5.1/ja/triggers. …
ありがとうございます。
MySQL依存ですが、ENUMやSETという型でも実現できそうですね。
今回は、1~100までの値を持った別テーブルを作って、
外部キーでそこを参照させる形をとりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- その他(プログラミング・Web制作) python コードについて(初学者です) 3 2023/07/20 14:44
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- PHP php エラー 2 2022/10/23 16:43
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLのテーブル作成でハイフン...
-
フォーム(オプションメニュー...
-
テーブル作成でエラーが出てき...
-
接続ができません
-
Movable type【ブログ】の設置...
-
ADOのバージョンを確認する方法
-
postgreSQLのデータ型
-
MySQLカラム名は日本語と英数字...
-
mysqlコマンドでSQL文が実行で...
-
泣きそうです>< PHPでSQLite3が...
-
データベースについて
-
プライマリーキーの昇順でソー...
-
XAMPPでMySQLで文字化け、文字...
-
mysql_close();の必要性について
-
MySQLにリモートホストから接続...
-
my.iniで設定するパスワードの...
-
複数行のクエリを、まとめて実...
-
VBAで変数内に保持された二次配...
-
phpからMySQLへの日本語文字化...
-
INT型は金額の型に使用するべき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブル作成でエラーが出てき...
-
MySQL エラー Duplicate entry...
-
MySQLのテーブル作成でハイフン...
-
MYSQLサービス停止時にWindows...
-
実行時エラー80004005
-
MYSQLのデータに「;」を入力
-
SQLで抽出してCSVで書き出した...
-
LIMIT で条件を満たしているの...
-
aes_decryptでsyntax error
-
MySQLのエラーコード1064の見方
-
mysqlコマンドにてタイムアウト
-
(統計量の)分散を算出したい
-
phpMyAdminについて
-
MySQLのCHECK制約がうまくいき...
-
mysqlのLOADでオートコミットオ...
-
何がおかしいでしょうか?
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
MySQLカラム名は日本語と英数字...
おすすめ情報