Sau*_*gya 64 sql t-sql sql-server sql-server-2005
我可以添加一个我指定为NOT NULL的列,我不想指定DEFAULT值,但是MS-SQL 2005说:
ALTER TABLE只允许添加可以包含空值的列,或者指定了DEFAULT定义,或者添加的列是标识或时间戳列,或者如果以前的条件都不满足,则表必须为空以允许添加这个专栏.列'test'不能添加到非空表'shiplist'中,因为它不满足这些条件.
如果是,请告诉我语法,如果不,请说明原因.
Gim*_*mly 81
不,你不能.
因为如果可以的话,SQL不知道在现有记录中将什么作为值.如果表中没有任何记录,那么它可以正常工作.
最简单的方法是使用默认值创建列,然后删除默认值.
ALTER TABLE dbo.MyTable ADD
MyColumn text NOT NULL CONSTRAINT DF_MyTable_MyColumn DEFAULT 'defaultValue'
ALTER TABLE dbo.MyTable
DROP CONSTRAINT DF_MyTable_MyColumn
Run Code Online (Sandbox Code Playgroud)
另一种方法是添加没有约束的列,填充所有单元格的值并添加约束.
Pau*_*lin 19
将列添加到表中,更新现有行,使它们都不为null,然后添加"not null"约束.
sad*_*bot 10
我使用这种方法插入没有默认值的 NOT NULL 列
ALTER TABLE [Table] ADD [Column] INT NULL
GO
UPDATE [Table] SET [Column] = <default_value>
ALTER TABLE [Table] ALTER COLUMN [Column] INT NOT NULL
Run Code Online (Sandbox Code Playgroud)