SQL Server不可以增加非空列
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_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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/66009/viewspace-791883/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Sql Server 自定義約束 實現:某列 可空,但非空值唯一不重複SQLServer
- SQL Server索引 - 非聚集索引SQLServer索引
- SQL Server自動化運維繫列:監控磁碟剩餘空間及SQL Server錯誤日誌SQLServer運維
- 非域環境下SQL Server mirror建立SQLServer
- sql server針對表增加新的分割槽SQLServer
- SQL Server 深入解析索引儲存(非聚集索引)SQLServer索引
- SQL Server 2008 建立非聚集索引SQLServer索引
- 解析SQL Server中行轉列問題SQLServer
- 非掃描式定位攻擊域內SQL ServerSQLServer
- SQL Server 2008 非聚集索引設計SQLServer索引
- SQL Server 聚集索引和非聚集索引的區別SQLServer索引
- SQL Server 非sysadmin賬號傳送郵件SQLServer
- MyBatis陣列與集合判斷非空和長度MyBatis陣列
- SQL Server 檢視錶佔用空間大小SQLServer
- SQL Server 索引和表體系結構(非聚集索引)SQLServer索引
- SQL SERVER檢視列的預設值SQLServer
- SQL Server資料庫記憶體增加的問題分析SQLServer資料庫記憶體
- SQL Server Profiler(P)導致C盤空間不足SQLServer
- 檢視SQL SERVER表的空間使用情況SQLServer
- SQL Server檢視所有表大小,所佔空間SQLServer
- 增加oracle表空間Oracle
- SQL SERVER的記憶體會不斷增加,問題分析(轉)SQLServer記憶體
- SQL Server 2008新特性稀疏列SQLServer
- SQL Server 2008 引入了“稀疏列”SQLServer
- SQL Server 2008稀疏列的使用SQLServer
- 怎樣在SQL Server中檢查 IDENTITY 列SQLServerIDE
- 檢視SQL SERVER表的空間使用情況(續)SQLServer
- 非空閒等待事件事件
- Linux增加swap空間Linux
- SQL Server 2008證書和非對稱金鑰SQLServer
- [zt] 聚集索引和非聚集索引(sql server索引結構及其使用)索引SQLServer
- 記錄個Java/Groovy的小問題:空字串呼叫split函式返回非空陣列Java字串函式陣列
- SQL Server一行多列求最大值SQLServer
- 包含列的索引:SQL Server索引進階 Level 5索引SQLServer
- SQL Server 2008稀疏列說明示例SQLServer
- 給Oracle BIGFILE表空間增加磁碟(通用的LINUX增加磁碟空間方案)OracleLinux
- oracle修改表增加列刪除列修改列Oracle
- 【JAVA】判斷字串非空Java字串