2012-05-08 50 views
5

我想限制整数字段可以包含的数字的数量。例如,我希望该字段包含长度不超过5的数字,因此99999将是最高有效条目。限制整数数据类型字段长度

这是可能在MySQL中做的吗?我看过文档,但没有找到我的答案。

回答

3

不幸的是,在MySQL中并没有实现CHECK约束和用户定义的类型。也许这将在未来的版本中改变。

在那之前,你可以使用触发器来校正输入,如果这是一个路要走你:

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

这是不可能在数据库级别进行的。您必须使用存储过程,或者将该逻辑放入应用程序中。

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

中等int是你可以得到的最接近。

此外,你可能会看到这样的事情在某个时刻:

CREATE TABLE blah (col INT (5)); 

这不会做你认为虽然。这实际上并没有将场地的长度限制在5个地方。它表示当zerofill被设置在列上时,它应该填充到5个位置。

1

无论何时对数据库进行更改,您都可以添加触发器来执行此操作。触发器将在应用更改之前执行,以验证它是否正在使用“有效”条目进行更新。如果条目无效,更新可以被拒绝。