在表中添加多列时,sql ser中出现错误

在表中添加多列时,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

在表中添加多个列时出错

ALTER TABLE只允许添加可以包含NULL的列, 或者指定了默认定义,或者正在添加的列为 标识或时间戳列,或者如果 满足之前的条件时,表必须为空才能允许 添加此列。无法将列“国家”添加到 非空表“tbl_警报”,因为它不满足以下条件 条件

这是我的
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
列,而该列中没有任何值。为什么人们从不阅读错误消息?它就在那里,这样你就可以知道哪里出了问题!这是简单的英语,所以除了把它翻译成你的母语之外,我不知道还有谁能比错误信息更好地回答你的问题。