SQL中改变列的数据类型

发表于:2016-6-13 10:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:燚夜    来源:51Testing软件测试网采编

  一、该列非主键、无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'
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号