1

3 つの質問、すべて基本的に同じです。

私のテーブルにはフィールドがあり、そのデータ型はフロートです。ただし、可能な値は 0.25 から 16.0 (0.25 刻み) の範囲で 64 個しかありません。これらの値は、追加の検証レイヤーとしてのみ許可したいと思います。

  1. フィールドをゼロより大きい値に設定できますか?

  2. float フィールドに最小値と最大値を設定できますか?

  3. 何らかの方法で増分を設定できますか?

または、私は考慮する必要があります:

a) 整数として設定し、任意の入力を入力前に 4 倍し、最大値を 64 に設定します。

b) 本当に長い列挙型を使用していますか?

4

3 に答える 3

2

これは通常、CHECK CONSTRAINT で行われます。残念ながら、MySql は CHECK CONSTRAINT をサポートしていません。代わりに BEFORE UPDATE TRIGGER を使用できます...

CREATE TRIGGER t BEFORE UPDATE ON yourTable 
FOR EACH ROW BEGIN 
IF NEW.name --here you put a check for a valid value
   SET NEW.name = 1 / 0;      --an error is raised - no insert
END IF; 
于 2009-09-15T11:32:15.500 に答える
0

個人的には、FLOAT ではなく DECIMAL を使用します。FLOAT は値の概算にすぎず、値は実際には具体的です。

特定の値を適用するには、そこにある 64 個の値だけを含むルックアップ テーブルを作成し、外部キーを使用します。

于 2009-09-15T13:38:12.730 に答える
0

通常、このようなことはクライアント アプリケーションで実施されます。ただし、mysql の「サーバー強制データ整合性」を検索すると、必要なものがいくつか見つかります。

于 2009-09-15T11:32:20.930 に答える