在SQL中向不带约束的表中添加新列

在SQL中向不带约束的表中添加新列,sql,sql-server,Sql,Sql Server,我想将列和值相同的跨行添加到表中。我用这个: ALTER TABLE dbo.MyTable ADD MyColumnName VARCHAR(20) NULL DEFAULT 'A201412' WITH VALUES 它几乎可以正常工作,但它会对列创建一些愚蠢的约束。其他现有列没有任何约束。如何创建没有约束的列?只需不添加default子句即可。只需使用: ALTER TABLE dbo.MyTable ADD MyColumnName VARCHAR(20); “愚蠢”的约束是DEFA

我想
值相同的
跨行添加到表中。我用这个:

ALTER TABLE dbo.MyTable
ADD MyColumnName VARCHAR(20) NULL
DEFAULT 'A201412'
WITH VALUES

它几乎可以正常工作,但它会对列创建一些愚蠢的约束。其他现有列没有任何约束。如何创建没有约束的列?

只需不添加
default
子句即可。只需使用:

ALTER TABLE dbo.MyTable ADD MyColumnName VARCHAR(20);
“愚蠢”的约束是
DEFAULT
关键字的真正用途。
例如,在创建列时使用
DEFAULT
意味着在
INSERT
中没有为列指定值时,将使用该值

CREATE TABLE test (
  a Int
, b Varchar(5) DEFAULT 'foo'
);

INSERT INTO test(a) VALUES (1)
将生成该行

a | b
1 | foo
而不是争吵

a | b
1 | NULL
正如Gordon已经说过的,不要添加
默认值
,然后使用
更新
将初始值放入新列中

ALTER TABLE dbo.MyTable ADD MyColumnName VARCHAR(20);

UPDATE dbo.MyTable SET MyColumnName = 'A201412'