【问题标题】:Numeric Data type SQL数值数据类型 SQL
【发布时间】:2022-07-07 21:19:09
【问题描述】:

我想在现有表中添加一个新列。我想要一个数字数据类型,并且列的默认值必须为零。所以这就是我正在尝试的。

ALTER TABLE COUNTRY
ADD MOBILE_ACTIVE NUMERIC(1,0) NOT NULL 

我收到以下错误

ALTER TABLE 只允许添加可以包含空值的列,或者指定了 DEFAULT 定义,或者添加的列是标识或时间戳列,或者如果前面的条件都不满足,则表必须为空允许添加此列。列“MOBILE_ACTIVE”无法添加到非空表“COUNTRY”,因为它不满足这些条件。

【问题讨论】:

  • ALTER TABLE COUNTRY ADD MOBILE_ACTIVE NUMERIC(1,0) NOT NULL DEFAULT 0

标签: sql numeric


【解决方案1】:

您正在尝试在已有数据的表中创建一个非空列。

你需要运行

ALTER TABLE COUNTRY
ADD MOBILE_ACTIVE NUMERIC(1,0) NOT NULL 
CONSTRAINT DF_MOBILE_ACTIVE DEFAULT 0 --create DEFAULT CONSTRANTI
WITH VALUES --must be used to populate the col for the existing rows

另一个注意事项...为什么使用numeric(1,0)?这只是意味着你得到一个数字 真/假值的正确数据类型是bit,如果您需要一个小整数,则可以使用适合的data types,例如tinyint

【讨论】:

    【解决方案2】:

    正如comments 中建议的@Sergey,您应该在错误中添加default

    ALTER TABLE COUNTRY
    ADD MOBILE_ACTIVE NUMERIC(1,0) NOT NULL DEFAULT 0
    

    或者你应该允许null 因为null 是一个非值0 的值是0,所以如果你想要它应该有一个值你应该default它为 0,如果不是,你应该允许null

    对于您应该使用null的日期,但对于textint,有人说永远不要使用null

    【讨论】:

      猜你喜欢
      • 2017-11-02
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多