如何将具有默认值的列添加到SQL Server 2000/SQL Server 2005中的现有表中?
当前回答
添加可为空的列时,WITH VALUES将确保将特定的DEFAULT值应用于现有行:
ALTER TABLE table
ADD column BIT -- Demonstration with NULL-able column added
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES
其他回答
在SQL Server 2008-R2中,我进入设计模式(在测试数据库中),使用设计器添加我的两列,并使用GUI进行设置,然后臭名昭著的右键单击提供了“生成更改脚本”选项!
突然弹出一个小窗口,你猜到了,里面有格式正确的保证可以工作的更改脚本。按下简易按钮。
ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO
DEFAULT的包含使用默认值填充现有行中的列,因此不违反NOT NULL约束。
--Adding New Column with Default Value
ALTER TABLE TABLENAME
ADD COLUMNNAME DATATYPE NULL|NOT NULL DEFAULT (DEFAULT_VALUE)
OR
--Adding CONSTRAINT And Set Default Value on Column
ALTER TABLE TABLENAME ADD CONSTRAINT [CONSTRAINT_Name] DEFAULT
(DEFAULT_VALUE) FOR [COLUMNNAME]
ALTER TABLE <YOUR_TABLENAME>
ADD <YOUR_COLUMNNAME> <DATATYPE> <NULL|NOT NULL>
ADD CONSTRAINT <CONSTRAINT_NAME> ----OPTIONAL
DEFAULT <DEFAULT_VALUE>
如果您没有提供约束名称,那么SQLServer将使用默认名称。
示例:-
ALTER TABLE TEMP_TABLENAME
ADD COLUMN1 NUMERIC(10,0) NOT NULL
ADD CONSTRAINT ABCDE ----OPTIONAL
DEFAULT (0)
或者,可以添加默认值,而不必显式命名约束:
ALTER TABLE [schema].[tablename] ADD DEFAULT ((0)) FOR [columnname]
如果在创建此约束时存在现有默认约束的问题,则可以通过以下方式删除这些约束:
alter table [schema].[tablename] drop constraint [constraintname]
推荐文章
- 在SQL server查询中将NULL替换为0
- 在SQL中修改表的模式名
- 如何得到累计和
- 如何在SQL Server 2005的一条语句中更新两个表?
- 如何创建临时表与SELECT * INTO tempTable从CTE查询
- 用于查找计数为>的记录的SQL查询
- “从Table1左连接Table2”和“从Table2右连接Table1”可以互换吗?
- 在SQL Server的选择语句中使用带TOP的变量,而不是动态的
- SQL变量保存整数列表
- 自然连接和内部连接的区别
- MySQL现在()+1天
- 在SQL中转换月号到月名函数
- 改变一个varchar列的最大长度?
- 如何在SQL中从DateTime格式获取时间?
- 外键约束:何时使用ON UPDATE和ON DELETE