2012-05-08 11 views
5

整数フィールドに含めることができる数値の数を制限しようとしています。たとえば、フィールドに5より長い番号を含める場合は、99999が最も有効なエントリになります。整数データ型フィールドの長さを制限する

これはMySQLで可能ですか?私はドキュメントを見てきましたが、私の答えは見つかりませんでした。

答えて

3

残念ながら、CHECK制約タイプもユーザ定義タイプもMySQLでは実装されていません。おそらくこれは将来のバージョンで変更されるでしょう。

それがあなたのために進むべき道であるならば、あなたは入力を修正するためにトリガーを使用することができますまで:

delimiter // 
CREATE TRIGGER trigger_check BEFORE INSERT ON your_table 
FOR EACH ROW 
BEGIN 
    IF NEW.NUM > 99999 THEN 
     SET NEW.NUM = 0; 
    END IF; 
END 
// 
+1

完全を期すために、あなたもその整数のテーブルへの外部キーを使用することができます99999で終わります。 –

0

これはDBレベルでは実行できません。ストアドプロシージャを使用するか、そのロジックをアプリケーションに組み込む必要があります。

http://dev.mysql.com/doc/refman/5.5/en/integer-types.html

メディアintはあなたが得ることができる最も近いです。

また、あなたはおそらくいくつかの点で、このようなものが表示されます:これは、あなたががどう思うか行いません

CREATE TABLE blah (col INT (5)); 

。これは実際にはフィールドの長さを5か所に制限しません。これは、zerofillが列に設定されている場合、5桁に0を埋め込む必要があることを示します。

1

トリガーを追加して、データベースに変更が加えられるたびにこれを強制できます。変更が適用される前にトリガが実行され、「有効な」エントリで更新されていることを確認します。エントリが無効な場合は、更新を拒否できます。