【问题标题】:while adding multiple columns in table giving error in sql ser [duplicate]在表中添加多列时在sql ser中给出错误[重复]
【发布时间】:2015-08-10 12:37:11
【问题描述】:

在表格中添加多个列时出错

ALTER TABLE 只允许添加可以包含空值的列, 或指定了 DEFAULT 定义,或添加的列是 身份或时间戳列,或者如果没有 满足先前的条件,表必须为空才能允许 添加此列。无法将“国家/地区”列添加到 非空表 'tbl_alerts' 因为它不满足这些 状况。

这是我的alter table 声明

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

【问题讨论】:

  • 添加不可为空的列时,应指定默认值。
  • 问题是表的已经存在的行 最终会有一个新的NOT NULL 列,其中没有任何值。
  • 为什么人们从来不阅读错误信息?它的存在是为了让您知道出了什么问题!它是简单的英语,所以除了将其翻译成您的母语之外,我不知道有人能比错误消息更好地回答您的问题。

标签: sql sql-server default-value ddl


【解决方案1】:

问题是您的表已经包含行,并且您尝试添加没有默认值的 not null 列。在这种情况下,数据库无法知道用什么值填充这些列,并且由于它们必须具有值(它们被定义为not null),因此它将失败。

解决此问题的一种方法是在列规范中添加默认值:

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'

【讨论】:

    猜你喜欢
    • 2022-10-05
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    相关资源
    最近更新 更多