高分悬赏! sql server 2000 字段长度如何减少 急急急!!!!
varchar字段如何改小,如varchar(50)改成varchar(40)??直接修改alter都没用,,,已经有数据,不能删除,...
varchar字段如何改小,如varchar(50) 改成varchar(40)?? 直接修改 alter 都没用 ,,, 已经有数据,不能删除,
展开
5个回答
展开全部
如果该字段已有数据没有超过40字节的,那么可以用alter
alter table 表名 alter column 列名 varchar(40)
如果已有数据中有超过40字节的,那么上面语句会报错:
SQL Server Database Error: 将截断字符串或二进制数据。语句已终止。
此时可以考虑增加一个varchar(40)的字段,将原字段的前40个字符拷过来,再删除原字段。
alter table 表名 add 列名2 varchar(40)
update 表名 set 列名2=left(列名,40)
alter table 表名 drop column 列名
追问
直接用alter 报错
服务器: 消息 5074,级别 16,状态 8,行 1
索引 'i_bd_item_info_5' 依赖于 列 'item_name'。
服务器: 消息 4922,级别 16,状态 1,行 1
ALTER TABLE ALTER COLUMN item_name 失败,因为有一个或多个对象访问此列。
追答
哦,还建了索引啊。你先取消索引,等长度改完以后再重建索引吧。
展开全部
把数据导出为sql,清空表过后,修改字段,再执行一次导入数据sql
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在设计器里面修改了然后保存有无报错?那个字段最长的一串字符复制来看看。
---------------补充-------------
报的错误应该是由于这一列充当了其他某些表的外键引起的,先把外键去掉应该就可以了。
---------------补充-------------
报的错误应该是由于这一列充当了其他某些表的外键引起的,先把外键去掉应该就可以了。
追问
“t_bd_item_info”表
- 警告: 自“varchar(50)”转换列“item_name”时可能丢失数据。
- 警告: 无法读取触发器“tr_bd_i_item_info”。
追答
我晕了,还有触发器?看来你这数据库是很复杂的,不知道你把50的长度改成40有什么作用,还是尽量别动好了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.先增加一列你需要长度的字段,
2.把数据由原字段更新过来,
3.删除原字段.
2.把数据由原字段更新过来,
3.删除原字段.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用alter语法报什么错误?
追问
直接用alter
服务器: 消息 5074,级别 16,状态 8,行 1
索引 'i_bd_item_info_5' 依赖于 列 'item_name'。
服务器: 消息 4922,级别 16,状态 1,行 1
ALTER TABLE ALTER COLUMN item_name 失败,因为有一个或多个对象访问此列。
追答
哦,如果列上有索引或者约束的话是会阻止更改列的操作
先要删除列的索引或者约束
DROP INDEX [i_bd_item_info_5] ON tbname
然后再修改列,若再出现约束依赖于xxx
就删除约束
alter table tbname drop 约束名xxx
然后在修改
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询