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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值