1

三个问题,基本相同:

所以我的表有一个字段,它的数据类型是浮点数。但是,只有 64 个可能的值,范围从 0.25 到 16.0(增量为 0.25),我只想允许这些值作为额外的验证层。

  1. 我可以将字段设置为大于零吗?

  2. 我可以为浮点字段设置最小值和最大值吗?

  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

我个人会使用 DECIMAL,而不是 FLOAT。FLOAT 只是您的值的近似值,并且您的值非常具体。

为了强制执行特定值,我将创建一个仅包含这 64 个值的查找表并使用外键。

于 2009-09-15T13:38:12.730 回答
0

通常这种事情是在客户端应用程序中强制执行的。但是,如果您为 mysql 搜索“服务器强制数据完整性”,您会找到一些您需要的内容。

于 2009-09-15T11:32:20.930 回答