数据库列int限制



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

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

感谢

添加检查约束(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 中的触发器

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

较长的版本是您可能希望了解MySQL整数数据类型。您将看到TINYINT就足够了,因为它是一个1字节的列,存储-128到+127或0到+255的值。

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

最新更新