数据库列int限制

时间:2012-02-20 12:57:17

标签: mysql sql

如何将数据库列的整数输入限制为特定的位数?

CREATE TABLE tab (id INT <1 digit> not null, value INT <10 digits> not null);

谢谢

2 个答案:

答案 0 :(得分:6)

添加检查约束(SQL Server)或触发器(MySQL,不支持CHECK约束)

SQL Server示例:

CREATE TABLE tab (
    id tinynot null CHECK (id BETWEEN 0 AND 9), 
    value INT not null CHECK (id BETWEEN 1000000000 AND 9999999999)
);
  • 如果您只想要一个数字,那么请使用tinyint
  • 如果您不存储号码(例如“123456789香蕉”),但是比如电话号码,则使用varchar类型。请参阅https://stackoverflow.com/a/8284674/27535

编辑,你需要MySQL中的触发器

答案 1 :(得分:0)

使用TINYINT UNSIGNED NOT NULL的短版本将是更合适的数据类型,但它不能限制存储的值。

较长的版本是您可能希望阅读MySQL integer data types。您将看到TINYINT足以满足您的目的,因为它是一个1字节的列,用于存储-128到+127或0到+255的值。

其次,如果您将其定义为TINYINT(1),那么您将其定义为显示宽度为1位的TINYINT。这不会阻止存储大于10的值。有关此行为的更多信息,请查看numeric type attributes