【IT168技术文档】
ALTER TABLE 只允许添加可包含空值或指定了 DEFAULT 定义的列。
如果:
IF EXISTS(SELECT 1 FROM SYSOBJECTS WHERE NAME = N'tab_test') AND NOT EXISTS(SELECT 1 FROM SYSOBJECTS A, SYSCOLUMNS B WHERE B.ID = A.ID AND B.NAME = N'col_test' and a.name = N'tab_test') alter table tab_test add col_test smallint NOT NULL GO
将会收到错误信息。
要增加非空列怎么办呢?
第1种办法:在add column时指定列有default
alter table tab_test add col_test NOT NULL CONSTRAINT DFtab_test_col_test DEFAULT 1
第2种办法:先给表增加个table_constraint default,再alter column
alter table tab_test add CONSTRAINT DFtab_test_col_test DEFAULT 1 for col_testalter table tab_test alter column col_test int NOT NULL
第3种办法:只好先增加空列,在修改为非空啦:
IF EXISTS(SELECT 1 FROM SYSOBJECTS WHERE NAME = N'tab_test') AND NOT EXISTS(SELECT 1 FROM SYSOBJECTS A, SYSCOLUMNS B WHERE B.ID = A.ID AND B.NAME = N'col_test' and a.name = N'tab_test') alter table tab_test add col_test smallint GO alter table tab_test alter column col_test smallint not null GO