在 SQL 中无约束地向 table 添加新列
Add new column to a table without constraint in SQL
我想 add
一个 column
和 same 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'
我想 add
一个 column
和 same 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'