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'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM