加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Alter Table修改表结构的错误及解决方法

(2013-12-21 08:35:08)
标签:

it

分类: mysql

Alter Table修改表结构的错误及解决方法


SQL Server帮助文档中,Alter Table对表结构的修改命令,很多都会出现错误,下面特针对此常见错误做出详细说明,文章中有引用Leo的方法例题

代码
一、为标识列添加默认值
下面的示例将修改 CompanyName 列,使其具有默认值:
ALTER TABLE MyCustomers ADD DEFAULT 'Datum Corporation' FOR [CompanyName]

二、如果设置了该列的默认值,那么再对该列结构作修改操作,都将引发错误(如删除或修改该列的默认值等)
如执行:alter table TableName drop column ColumnName语句时就会报错,如下,
“消息 5074,级别 16,状态 1,第 1 行
对象'DF__Tb_SalaryPar__aa__7DB89C09' 依赖于 列'aa'。
消息 4922,级别 16,状态 9,第 1 行
由于一个或多个对象访问此列,ALTER TABLE DROP COLUMN aa 失败。”

因为存在了default约束,此时我们需要做的:
1.查找出表中该列的约束名称
declare @conName varchar(50)
select @conName =b.name from sysobjects b join syscolumns a on b.id = a.cdefault
where a.id = object_id('TableName')
and a.name ='ColumName'

2. 删除约束删除该列 即可
exec('alter table TableName drop constraint ' + @conName)
exec('alter table TableName drop column ColumName')

三、其它操作
向表中增加一个address字段:
  ALTER TABLE distributors ADD COLUMN [address] varchar(30)
  从表中删除一个字段:
  ALTER TABLE distributors DROP COLUMN [address] RESTRICT
  在一个操作中修改两个现有字段的类型:
  ALTER TABLE distributors ALTER COMUMN [address] varchar(20)
给一个字段增加一个非空约束:
ALTER TABLE distributors ALTER COLUMN [address] varchar(80) NOT NULL
----------------------------------
  1. sqlserver在删除有约束的列基本的处理方法  
  2.   
  3. 1.首先需要删除跟约束有关的键  
  4. 2.删除字段  
  5.   
  6. 删除约束语句 :  
  7. alter table  表  
  8. drop constraint  约束名或键  
  9. go   
  10.   
  11. 删除字段语句‘  
  12. alter table  表  
  13. drop column 字段名  
  14. go   
  15.   
  16. 否则会提示错误:由于一个或多个对象访问此列,ALTER TABLE DROP COLUMN pid 失败。  
  17.   
  18.   
  19. 创建约束的时候,一般会默认指定一个约束名称,如果你不显示指定约束名称。  
  20.   
  21. 创建的约束命一般在企业管理器: 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有