在 SQL 中无约束地向 table 添加新列

Add new column to a table without constraint in SQL

我想 add 一个 columnsame value 跨行到一个 table。我用这个:

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

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

只是不要添加 default 子句。只需使用:

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

"stupid" 约束是 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 所说,不要添加 DEFAULT,然后使用 UPDATE 将初始值放入新列

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

UPDATE dbo.MyTable SET MyColumnName = 'A201412'