在SQL中没有约束的表中添加新列

时间:2015-01-10 12:49:33

标签: sql sql-server

我希望add column same value跨行到表ALTER TABLE dbo.MyTable ADD MyColumnName VARCHAR(20) NULL DEFAULT 'A201412' WITH VALUES 。我用这个:

{{1}}

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

2 个答案:

答案 0 :(得分:1)

“愚蠢”约束是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

正如戈登已经说过的,不要添加DEFAULT,然后使用UPDATE将初始值放在新列中

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

UPDATE dbo.MyTable SET MyColumnName = 'A201412'

答案 1 :(得分:0)

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

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