在表中添加多列时,sql ser中出现错误
在表中添加多个列时出错 ALTER TABLE只允许添加可以包含NULL的列, 或者指定了默认定义,或者正在添加的列为 标识或时间戳列,或者如果 满足之前的条件时,表必须为空才能允许 添加此列。无法将列“国家”添加到 非空表“tbl_警报”,因为它不满足以下条件 条件 这是我的在表中添加多列时,sql ser中出现错误,sql,sql-server,default-value,ddl,Sql,Sql Server,Default Value,Ddl,在表中添加多个列时出错 ALTER TABLE只允许添加可以包含NULL的列, 或者指定了默认定义,或者正在添加的列为 标识或时间戳列,或者如果 满足之前的条件时,表必须为空才能允许 添加此列。无法将列“国家”添加到 非空表“tbl_警报”,因为它不满足以下条件 条件 这是我的altertable语句 ALTER TABLE tbl_alerts ADD Country [varchar](50) NOT NULL, StateName [va
altertable
语句
ALTER TABLE tbl_alerts
ADD
Country [varchar](50) NOT NULL,
StateName [varchar](50) NOT NULL,
City [varchar](50) NOT NULL,
MacAddress [varchar](50) NOT NULL,
OSDetails [varchar](50) NOT NULL,
MachineName [varchar](50) NOT NULL,
Browser [varchar](50) NOT NULL
问题是您的表已经包含行,并且您正在尝试添加没有默认值的
notnull
列。在这种情况下,数据库无法知道要用什么值填充这些列,而且因为它们必须有值(它们被定义为notnull
),所以它将失败
解决此问题的一种方法是向列规范中添加默认值:
ALTER TABLE tbl_alerts
ADD
Country [varchar](50) NOT NULL DEFAULT 'USA',
StateName [varchar](50) NOT NULL DEFAULT 'NY',
City [varchar](50) NOT NULL DEFAULT 'NY',
MacAddress [varchar](50) NOT NULL DEFAULT '68:f7:28:40:e8:b4',
OSDetails [varchar](50) NOT NULL DEFAULT 'Fedora 21',
MachineName [varchar](50) NOT NULL DEFAULT 'MyComputer',
Browser [varchar](50) NOT NULL DEFAULT 'Firefox'
添加不可为NULL的列时,应指定一个默认值。问题是,表中已有的行最终会有一个新的
NOT NULL
列,而该列中没有任何值。为什么人们从不阅读错误消息?它就在那里,这样你就可以知道哪里出了问题!这是简单的英语,所以除了把它翻译成你的母语之外,我不知道还有谁能比错误信息更好地回答你的问题。