当前位置: 首页 > 面试题库 >

将具有默认值的列添加到SQL Server中的现有表

锺离晗昱
2023-03-14
问题内容

如何在SQL Server 2000 / SQL Server 2005中的现有表中添加具有默认值的列?


问题答案:

句法:

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES

例子:

ALTER TABLE SomeTable
        ADD SomeCol Bit NULL --Or NOT NULL.
 CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
    DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.

笔记:
可选的约束名称:
如果省略,CONSTRAINT D_SomeTable_SomeColSQL Server将自动生成
一个带有有趣名称的Default-Contraint
如果您的Column为NOT NULL,则
无论您是否指定,它都会自动对所有现有记录使用默认值WITH VALUES。


插入如何与默认约束一起使用:
如果将记录插入到SomeTable并且不指定SomeCol的值,则它将默认为0。
如果您插入一个Record并将其SomeCol值指定为NULL(并且您的列允许为空),
则将不使用Default-Constraint,NULL并将其作为Value插入。



 类似资料:
  • 问题内容: 我正在寻找将列添加到默认值为0的MySQL数据库的语法 参考 问题答案: 尝试这个: 从链接到的文档中: 要在页面下方查找搜索语法,请执行以下操作: column_definition子句对ADD和CHANGE使用与CREATE TABLE相同的语法。请参见第12.1.17节“创建表语法”。 并从链接页面: 注意那里的DEFAULT这个词。

  • 问题内容: 我正在使用Postgres DB,对于迁移,我正在使用Liquibase。我有一个ORDERS表,其中包含以下列: 我需要添加一个新列,该列将容纳上次修改订单的用户-该列应不可为空,并且应具有默认值CREATOR。对于新订单,我可以解决业务逻辑的默认值部分, 但是 问题是我已经有一个现有订单,因此在创建新列时需要设置默认值。现在,我知道我可以在Liquibase中设置一个硬编码的默认值

  • 我使用的是Postgres DB,对于迁移,我使用的是Liquibase。我有一个包含以下列的订单表: 我需要添加一个新的列,它将保存上次修改订单的用户-此列不应为空,并应具有默认值,即创建者。对于新订单,我可以解决业务逻辑的默认值部分,但问题是我已经有一个现有订单,我需要在创建新列时设置默认值。现在,我知道我可以在Liquibase中设置一个硬编码的默认值,但是有没有一种方法可以基于该表的其他列

  • 所以我有一个这样的avro记录(称之为v1): 我想添加一个区分大小写的字段,默认值为false(称为v2)。我的第一种方法是: 根据模式演变,这是向后和向前兼容的,因为具有新模式的读取器读取用旧写入器模式编码的记录将能够填充此字段默认值和具有旧模式的读取器将能够读取用新写入器模式编码的记录,因为它只会忽略新添加的字段。 添加此字段的另一种方法是添加默认值为null的

  • 问题内容: 我需要创建一个基本上只保留索引列表的表。因此,我创建了一个表,其中只有一个自动递增的列,称为“ id”。但是,我似乎无法向该表隐式添加自动递增的值。 我知道通常在表中有这样一列(不仅有此列)时,您可以执行以下操作: 插入表(col1,col2 …)值(val1,val2 …) 而且,如果您不指定自动递增的列,它将自动获取一个值。但是,类似: 插入表()值()插入表插入表() 等等。所有

  • 本文向大家介绍在MySQL中添加具有当前时间的新列作为默认值?,包括了在MySQL中添加具有当前时间的新列作为默认值?的使用技巧和注意事项,需要的朋友参考一下 为此,可以在MySQL中使用DEFAULT CURRENT_TIMESTAMP子句。以下是语法- 让我们首先创建一个表- 现在您可以使用insert命令在表中插入一些记录- 使用select语句显示表中的所有记录- 输出结果