SQL Server不可以增加非空列

kitesky發表於2005-03-07

ALTER TABLE only allows columns to be added that can contain nulls or have a DEFAULT definition specified.

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_test
alter 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

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/66009/viewspace-791883/,如需轉載,請註明出處,否則將追究法律責任。

相關文章