5

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

这可以在MySQL中做到吗?我查看了文档,但没有找到我的答案。

4

3 回答 3

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
//
于 2012-05-08T06:42:52.563 回答
1

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

于 2012-05-08T06:36:23.920 回答
0

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

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

中等 int 是您可以获得的最接近的值。

此外,您可能会在某些时候看到类似的内容:

CREATE TABLE blah ( col INT (5) );

但是,这并没有按照您的想法进行。这实际上并没有将字段的长度限制为 5 个位置。它表示当在该列上设置 zerofill 时,它应该被 0 填充到 5 个位置。

于 2012-05-08T06:35:53.847 回答