提问人:Loopinfility 提问时间:7/7/2022 更新时间:7/9/2022 访问量:233
数值数据类型:SQL
Numeric Data type SQL
问:
我想向现有表添加一个新列。我想要一个数字数据类型,并且列的默认值必须为零。所以这就是我正在尝试的。
ALTER TABLE COUNTRY
ADD MOBILE_ACTIVE NUMERIC(1,0) NOT NULL
我收到以下错误
ALTER TABLE 仅允许添加可以包含 null 或指定了 DEFAULT 定义的列,或者要添加的列是标识或时间戳列,或者如果上述条件均不满足,则表必须为空才能允许添加此列。不能将列“MOBILE_ACTIVE”添加到非空表“COUNTRY”中,因为它不满足这些条件。
答:
1赞
Giovanni Luisotto
7/7/2022
#1
您正在尝试在已包含数据的表中创建一个非 null 列。
您将需要运行
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
另一个注意事项...为什么要使用?它只是意味着你得到一个数字
true/false 值的正确数据类型是 ,如果您需要一个小整数,则有合适的数据类型,例如numeric(1,0)
bit
tinyint
0赞
Shmiel
7/7/2022
#2
正如评论中建议@Sergey您应该在错误中添加:default
ALTER TABLE COUNTRY
ADD MOBILE_ACTIVE NUMERIC(1,0) NOT NULL DEFAULT 0
或者你应该允许一个非值,而是一个值为0,所以如果你希望它应该有一个值,你应该把它设置为0,如果不是,你应该允许。null
null
0
default
null
对于日期,你应该使用 ,但对于,有些人说永远不要使用 。null
text
int
null
但需要注意的一件事是,通过使用,你添加一个不允许您在不删除约束的情况下进入列(至少在我使用的 SQL Server 中,不知道其他),所以你应该添加一个名称,如果你希望能够删除它。default
constraint
drop
constraint
评论