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