我试图限制整数字段可以包含的数字数量。例如,我希望该字段包含长度不超过 5 的数字,因此 99999 将是最高有效条目。
这可以在MySQL中做到吗?我查看了文档,但没有找到我的答案。
我试图限制整数字段可以包含的数字数量。例如,我希望该字段包含长度不超过 5 的数字,因此 99999 将是最高有效条目。
这可以在MySQL中做到吗?我查看了文档,但没有找到我的答案。
不幸的是,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
//
每当对数据库进行更改时,您都可以添加触发器来强制执行此操作。触发器将在应用更改之前执行,以验证它是否正在使用“有效”条目进行更新。如果条目无效,则可以拒绝更新。
这在数据库级别是不可能的。您必须使用存储过程,或者将该逻辑放入您的应用程序中。
http://dev.mysql.com/doc/refman/5.5/en/integer-types.html
中等 int 是您可以获得的最接近的值。
此外,您可能会在某些时候看到类似的内容:
CREATE TABLE blah ( col INT (5) );
但是,这并没有按照您的想法进行。这实际上并没有将字段的长度限制为 5 个位置。它表示当在该列上设置 zerofill 时,它应该被 0 填充到 5 个位置。