SQL改變列的數據類型

一、該列非主鍵、無default約束

直接更新:

alter table 表名 alter column 列名 數據類型

二、該列爲主鍵列、無default約束

(1)刪除主鍵

alter table 表名 drop constraint 主鍵名稱

(2)更新數據類型

alter table 表名 alter column 列名 數據類型 not null

(3)添加主鍵

alter table 表名 add constraint 主鍵名稱 primary key (主鍵字段1,主鍵字段2)

三、該列爲主鍵列,有default約束

(1)刪除主鍵

alter table 表名 drop constraint 主鍵名稱

(2)解除default約束

USE 數據庫名
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'default約束名'
AND type = 'D')
BEGIN
EXEC sp_unbindefault '數據表.字段'
END
GO

(3)更新數據類型

alter table 表名 alter column 列名 數據類型 not null

(4)添加主鍵

alter table 表名 add constraint 主鍵名稱 primary key (主鍵字段1,主鍵字段2)

輔助語句:

(1)找出字段約束名稱並賦值到變量中

declare @name varchar(50)
select @name =b.name from sysobjects b join syscolumns a on b.id = a.cdefault
where a.id = object_id('表名')
and a.name ='列名'

(2)將字段綁定到用戶自定義的數據類型,並不影響現有綁定(使用futureonly)

此示例將默認值 def_ssn 綁定到用戶定義的數據類型 ssn。因爲已指定 futureonly,所以不影響類型 ssn 的現有列。
USE 數據庫名
EXEC sp_bindefault '列名', '自定義數據類型', 'futureonly'

實例:

alter table PBKA_t_BillHead alter column F_PBKA_DKNAME nvarchar(256)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章