问:

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

答1:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

句法:

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

例子:

ALTER TABLE SomeTableADD 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_SomeCol,则 SQL Server 将自动生成    具有有趣名称的默认约束,例如:DF__SomeTa__SomeC__4FB7FEF6

可选的 With-Values 语句: 仅当您的列为 Nullable 时才需要 WITH VALUES    并且您想要用于现有记录的默认值。如果您的列是 NOT NULL,那么它将自动使用默认值    对于所有现有记录,无论您是否指定 WITH VALUES。

插入如何与默认约束一起使用:如果您将记录插入 SomeTable 并不指定 SomeCol’ s 值,则默认为 0。 如果您插入记录 并且 将 SomeCol 的值指定为 NULL(以及您的列允许空值),    那么默认约束将不被使用,并且 NULL 将作为值插入。

笔记基于以下每个人的出色反馈。特别感谢:@Yatrix、@WalterStabosz、@YahooSerious 和 @StackMan 的评论。

请记住,如果该列可以为空,则 null 将是用于现有行的值。

@Thecrocodilehunter Nullable 列意味着您可以为列值插入 Null。如果它不是可为空的列,则必须插入该数据类型的一些值。因此,对于现有记录,将在其中插入 Null,在新记录中,除非另有说明,否则将插入您的默认值。说得通?

我比 dbugger 更喜欢这个答案,因为它明确命名了默认约束。仍然使用 dbugger 的语法创建默认约束,除了它的名称是自动生成的。在编写 DROP-CREATE 脚本时知道确切的名称很方便。

使用 WITH VALUES 更新现有的可为空行。请参阅 MSDN:“如果添加的列允许空值并且指定了 WITH VALUES,则默认值存储在新列中,并添加到现有行中。”

当它回填默认值时,它会触发更新触发器和/或获取表锁吗?如果是这样,它们可以避免吗?

答2:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO

包含 DEFAULT 会使用默认值填充现有行中的列,因此不会违反 NOT NULL 约束。

只是为了澄清 - 如果命令中省略了“NOT NULL”,则现有行的值将不会被更新并且将保持为 NULL。如果命令中包含“NOT NULL”,则将更新现有行的值以匹配默认值。

答3:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

添加可为空的列时,WITH VALUES 将确保将特定的 DEFAULT 值应用于现有行:

ALTER TABLE table
ADD column BIT     -- Demonstration with NULL-able column added
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES

答4:

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

ALTER TABLE
ADD   NOT NULL
GO
ALTER TABLE
ADD CONSTRAINT  DEFAULT  FOR
GO

答5:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES'

答6:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

最基本的版本,只有两行

ALTER TABLE MyTable
ADD MyNewColumn INT NOT NULL DEFAULT 0

答7:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

当您添加的列具有 NOT NULL 约束但没有 DEFAULT 约束(值)时请注意。在这种情况下,如果表中有任何行,ALTER TABLE 语句将失败。解决方案是从新列中删除 NOT NULL 约束,或为其提供 DEFAULT 约束。

答8:

huntsbot.com – 高效赚钱,自由工作

利用:

-- Add a column with a default DateTime
-- to capture when each record is added.ALTER TABLE myTableName
ADD RecordAddedDate SMALLDATETIME NULL DEFAULT (GETDATE())
GO 

答9:

huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。

如果你想添加多个列,你可以这样做,例如:

ALTER TABLE YourTableADD Column1 INT NOT NULL DEFAULT 0,Column2 INT NOT NULL DEFAULT 1,Column3 VARCHAR(50) DEFAULT 'Hello'
GO

答10:

huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。

要将列添加到具有默认值的现有数据库表,我们可以使用:

ALTER TABLE [dbo.table_name]ADD [Column_Name] BIT NOT NULL
Default ( 0 )

这是将列添加到具有默认值的现有数据库表的另一种方法。

下面是一个更彻底的 SQL 脚本,用于添加具有默认值的列,包括在添加列之前检查列是否存在,还检查约束并在存在约束时将其删除。该脚本还为约束命名,这样我们就可以有一个很好的命名约定(我喜欢 DF_),如果不是,SQL 会给我们一个具有随机生成数字的名称的约束;所以也很高兴能够命名约束。

-------------------------------------------------------------------------
-- Drop COLUMN
-- Name of Column: Column_EmployeeName
-- Name of Table: table_Emplyee
--------------------------------------------------------------------------
IF EXISTS (SELECT 1FROM INFORMATION_SCHEMA.COLUMNSWHERE TABLE_NAME = 'table_Emplyee'AND COLUMN_NAME = 'Column_EmployeeName')BEGINIF EXISTS ( SELECT 1FROM sys.default_constraintsWHERE object_id = OBJECT_ID('[dbo].[DF_table_Emplyee_Column_EmployeeName]')AND parent_object_id = OBJECT_ID('[dbo].[table_Emplyee]'))BEGIN------  DROP ContraintALTER TABLE [dbo].[table_Emplyee] DROP CONSTRAINT [DF_table_Emplyee_Column_EmployeeName]PRINT '[DF_table_Emplyee_Column_EmployeeName] was dropped'END--    -----   DROP Column   -----------------------------------------------------------------ALTER TABLE [dbo].table_EmplyeeDROP COLUMN Column_EmployeeNamePRINT 'Column Column_EmployeeName in images table was dropped'END--------------------------------------------------------------------------
-- ADD  COLUMN Column_EmployeeName IN table_Emplyee table
--------------------------------------------------------------------------
IF NOT EXISTS (SELECT 1FROM INFORMATION_SCHEMA.COLUMNSWHERE TABLE_NAME = 'table_Emplyee'AND COLUMN_NAME = 'Column_EmployeeName')BEGIN----- ADD Column & ContraintALTER TABLE dbo.table_EmplyeeADD Column_EmployeeName BIT   NOT NULLCONSTRAINT [DF_table_Emplyee_Column_EmployeeName]  DEFAULT (0)PRINT 'Column [DF_table_Emplyee_Column_EmployeeName] in table_Emplyee table was Added'PRINT 'Contraint [DF_table_Emplyee_Column_EmployeeName] was Added'ENDGO

这是将列添加到具有默认值的现有数据库表的两种方法。

答11:

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

利用:

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

参考:ALTER TABLE (Transact-SQL)(MSDN)

原文链接:https://www.huntsbot.com/qa/BBrL/add-a-column-with-a-default-value-to-an-existing-table-in-sql-server?lang=zh_CN&from=csdn

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

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

  1. SQL server 中的插入表行数据,以及插入标识值

    语法介绍 (1)在SQL server数据库中我们如何添加新的行,并且添加数据呢? Insert:该语句向表中添加新行 values: 要插入的值 语法如下: Insert into 模式.表名(字段 ...

  2. sql数据库备份默认路径_在Linux上SQL Server中更改默认数据库文件和备份路径

    sql数据库备份默认路径 In a previous article, we explored the process to change default SQL dump file location ...

  3. 用VB代码在SQL SERVER 中创建数据库,表,列.以及对数据库的操作

    前面看了一编用VB代码创建ACCESS数据库的文章,写的很好. 根据思路,写下创建SQL 数据库的方法,供大家参考. 1:引用ADO2.5lib 2:在窗体上添加一个按钮COMMAND1 3:按钮代码 ...

  4. SQL Server中的标识列

    一.标识列的定义以及特点 SQL Server中的标识列又称标识符列,习惯上又叫自增列. 该种列具有以下三种特点: 1.列的数据类型为不带小数的数值类型 2.在进行插入(Insert)操作时,该列的值 ...

  5. SQL Server中如何给主键添加主键约束

    SQL Server中如何给主键添加主键约束? 方法/步骤 1 SQL Server中如何给表添加主键约束,下面为大家分享了两种方法希望大家能够速学速懂. 2 3 在如下图中大家可以看到的是一个Stu ...

  6. sql向数据库表中插入列,sql给表的列添加说明,sql添加主外键约束,增加列,增加字段

    规则代码 use 数据库名--向表中插入列alter table 表名 add 列名 类型go--给表的列添加说明 execute sp_addextendedproperty 'MS_Descrip ...

  7. SQL Server中的查询跟踪列值

    Sometimes, when I saw expressions like 'Expr1002' or 'WindowCount1007' or something similar in the c ...

  8. sql server中datetime默认值设置和日期函数

    sql server中datetime默认值设置和日期函数 select CONVERT(varchar, getdate(), 120 )         -----------------> ...

  9. SQL Server中如何取得刚插入的标识值

    数据库实际应用中,我们往往需要得到刚刚插入 的标志值来往相关表中写入数据.但我们平常得到的真的是我们需要的那个值么? 有时我们会使用 SELECT @@Identity 来获得我们刚刚插入的值,比如下 ...

最新文章

  1. htc one m7刷Linux,HTC One M7刷机教程 HTC One M7线刷教程
  2. 动态导航与动态路由绑定
  3. 数据结构线性表博客作业总结
  4. TCM与Cache介绍
  5. [Java基础]线程基础与实现多线程
  6. 给Macbook装系统的网址
  7. python树的实现
  8. flutter: 建树流程
  9. 2.Linux环境下配置Solr4.10.3
  10. mysql 缺省配置 崩溃_MySQL5.6初始配置调优_MySQL
  11. 这台计算机似乎没有安装操作系统_【每日一练】计算机一级考试(一)
  12. 树莓派百度云下载工具bypy
  13. SteamVR Unity工具包(三):控制器交互
  14. pymol 分离蛋白与小分子保存;pymol分离蛋白多聚体亚基;pymol对接位点交互图展示;去除杂原子
  15. OBS Studio显示器捕获黑屏的解决方法
  16. 视频号怎么赚钱?4个赚钱小技巧,实现视频号流量变现!
  17. c语言入门自学免费app,C语言入门学习最新版下载-C语言入门学习app手机版v1.0.2 安卓版-腾飞网...
  18. ERIC6 打开项目报错
  19. Windows10分屏,扩展显示器2刷新率只有29Hz
  20. vue直播流播放器DPlayer使用

热门文章

  1. 利用word和excel实现中英文互换
  2. 蓝桥---超声波测距
  3. Python数据分析与机器学习21- 逻辑回归项目实战5-阀值
  4. 全年GMV突破40亿元关口,为何如涵仍难造出第二个“张大奕”?
  5. Linux创建widget过程,Linux上打包wgz和wgt widget项目
  6. 期待您加入!CSDN招募优质英文布道者
  7. 曙光W580-G20来电自启
  8. 透过2W条评论看动漫《博人传-火影忍者新时代》
  9. html边角效果图,PS制作卷边/卷角效果图2种方法,PS交错的作用,PS压缩图像方法,PSHTML+图像的解释,PS颜色位数的作用...
  10. 我是怎么解决微信封了我们域名的