技术开发 频道

SQL Server不可以增加非空列的办法

  【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
0
相关文章