如何将具有默认值的列添加到SQL Server 2000/SQL Server 2005中的现有表中?
当前回答
当要添加的列具有NOT NULL约束,但没有DEFAULT约束(值)时,请注意。在这种情况下,如果表中有任何行,ALTER TABLE语句将失败。解决方案是从新列中删除NOT NULL约束,或为其提供DEFAULT约束。
其他回答
或者,可以添加默认值,而不必显式命名约束:
ALTER TABLE [schema].[tablename] ADD DEFAULT ((0)) FOR [columnname]
如果在创建此约束时存在现有默认约束的问题,则可以通过以下方式删除这些约束:
alter table [schema].[tablename] drop constraint [constraintname]
试试这个
ALTER TABLE Product
ADD ProductID INT NOT NULL DEFAULT(1)
GO
ALTER TABLE ADD ColumnName {Column_Type} Constraint
MSDN文章ALTERTABLE(Transact-SQL)具有所有altertable语法。
Use:
-- Add a column with a default DateTime
-- to capture when each record is added.
ALTER TABLE myTableName
ADD RecordAddedDate SMALLDATETIME NULL DEFAULT (GETDATE())
GO
例子:
ALTER TABLE tes
ADD ssd NUMBER DEFAULT '0';
推荐文章
- 有人可以对SQL查询进行版权保护吗?
- 如何知道MySQL表最近一次更新?
- 如何转储一些SQLite3表的数据?
- 如何检查SQL Server文本列是否为空?
- 如何创建一个SQL Server函数“连接”多行从一个子查询到一个单独的分隔字段?
- 在MySQL中的一个查询中更新多个具有不同值的行
- 在SQL中更新多个列
- 如何删除表中特定列的第一个字符?
- MySQL OR与IN性能
- 哪个更快/最好?SELECT *或SELECT columnn1, colum2, column3等
- GROUP BY with MAX(DATE)
- 删除id与其他表不匹配的sql行
- 等价的限制和偏移SQL Server?
- 如何从SQL Server中的字符串中剥离所有非字母字符?
- 为什么我不能在DELETE语句中使用别名?