2011年2月25日 星期五

T-SQL Add/Drop Default Value

本篇文章主要是要透過撰寫T-SQL Script去異動一個欄位的預設值(Default Value)。


假設我們在Northwind這個資料庫中,有一個Table名為TestTable,其中有兩欄位MachineID與Name,如下圖:



如果你想要使用SQL 語法去異動欄位結構,則可使用下列語法:

1.將MachineID欄位設為允許Null值


   alter table TestTable alter column MachineID int null

2.為MachineID欄位新增一個default值=>1


   alter table TestTable ADD DEFAULT 1 FOR MachineID

現在要將上面兩項異動再還原回去,則可使用下列語法:

3.將MachineID欄位設不可為Null值


   alter table TestTable alter column MachineID int not null

4.移除MachineID欄位的default值須,先查詢該default的名稱,如下:



   use Northwind
   SELECT * FROM sys.objects


由上可知我們查出在sys.objects這個Table中,若欄位名稱為Type這個欄位的值為「D」時,表示該筆記錄為「Default Value」,該default的名稱為DF__TestTable__Machi__5812160E,接著使用下列語法來刪除MachineID欄位的default值。


   alter table TestTable DROP constraint DF__TestTable__Machi__5812160E

如果我們直接使用下列語法直接刪除Default Value,則會有下圖的錯誤產生。


   DROP DEFAULT DF__TestTable__Machi__5812160E