Alter Table对表结构修改时,常见的错误及解决方法
2009-12-12 11:09
260 查看
最近自已开发了一个自定义表单管理系统,就是让用户自己定制自己的表,字段,通过此系统自动生成表,并提供数据录入与修改的界面。
我参照SQL Server帮助文档中Alter Table命令,对表结构进行修改时,出错了一些错误,下面特针对此常见错误做出详细说明,文章中有引用作者[Leo]的方法例题
代码
一、为标识列添加默认值
下面对表MyCustomers中的字段CompanyName进行修改,使其具有默认值'Datum Corporation'
ALTER TABLE MyCustomers ADD DEFAULT 'Datum Corporation' FOR [CompanyName]
如果该列设置了默认值,那么对该列结构作修改操作,都将引发错误(如删除或修改该列的默认值等)
出错信息
如下:
“消息 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')
二、对表distributors中address字段的其它操作
向表中增加一个address字段:
ALTER TABLE distributors ADD COLUMN [address] varchar(30)
从表中删除一个字段:
ALTER TABLE distributors DROP COLUMN [address] RESTRICT
修改字段的长度或类型:
ALTER TABLE distributors ALTER COLUMN [address] varchar(20)
给一个字段增加一个非空约束:
ALTER TABLE distributors ALTER COLUMN [address] varchar(80) NOT NULL
我参照SQL Server帮助文档中Alter Table命令,对表结构进行修改时,出错了一些错误,下面特针对此常见错误做出详细说明,文章中有引用作者[Leo]的方法例题
代码
一、为标识列添加默认值
下面对表MyCustomers中的字段CompanyName进行修改,使其具有默认值'Datum Corporation'
ALTER TABLE MyCustomers ADD DEFAULT 'Datum Corporation' FOR [CompanyName]
如果该列设置了默认值,那么对该列结构作修改操作,都将引发错误(如删除或修改该列的默认值等)
出错信息
如下:
“消息 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')
二、对表distributors中address字段的其它操作
向表中增加一个address字段:
ALTER TABLE distributors ADD COLUMN [address] varchar(30)
从表中删除一个字段:
ALTER TABLE distributors DROP COLUMN [address] RESTRICT
修改字段的长度或类型:
ALTER TABLE distributors ALTER COLUMN [address] varchar(20)
给一个字段增加一个非空约束:
ALTER TABLE distributors ALTER COLUMN [address] varchar(80) NOT NULL
相关文章推荐
- 【BMC_patrol常见问题汇总】PatrolAgent安装100%报错和错误的解决方法
- Oracle数据库TNS常见错误解决方法
- hibernate的常见错误解决方法
- PHP编译过程中常见错误信息的解决方法
- rsync 常见错误与解决方法整理
- ssh 配对密匙方法 修改端口 以及常见的错误
- 初学Maven常见错误及解决方法
- 操作CoreData 常见的错误及解决方法
- SQL Server阻止保存修改表结构的解决方法
- mysql常见错误提示及解决方法
- PHP编译过程中常见错误信息的解决方法
- 常见错误解决方法(一):无法操作数据库
- MySQL常见错误提示及解决方法
- JPA系列--JPA部署阶段常见错误及解决方法(持续更新)
- ASP常见错误信息、原因分析与解决方法
- MyBatis中常见的几种错误解决方法
- SQL Server连接中常见错误解决方法
- PHP新手NOTICE错误常见解决方法
- nginx配置与常见错误解决方法
- sqlserver 2008手工修改表结构,表不能保存的问题与解决方法