--需求有变,需要往t_login表的f_userName字段添加外国人名,之前设置的varchar(10)不够,商议决定改成varchar(30),执行的时候,提示消息 索引‘uq_f_userName‘ 依赖于 列‘f_userName‘。由于一个或多个对象访问此列,ALTER TABLE ALTER COLUMN f_userName 失败。
--原来,之前为了防止f_userName重复,添加了唯一索引uq_f_userName。
--进行如下操作后,问题妥妥解决
--表名:t_login(登录表)
--字段:f_userName(用户名)
--执行要求:把f_userName长度由varchar(10)修改成varchar(30)
--语法格式
--删除之前的索引
drop index uq_f_userName on t_login
go
--修改字段长度
alter table t_login alter column f_userName varchar(30)
go
--重新创建索引
create unique nonclustered index [uq_f_userName] on [dbo].[t_login]
(
[f_userName] asc
)
--索引不存在的时候才创建
where ([f_userName] is not null)
--这是Sql Server一系列的索引,自行补脑:https://msdn.microsoft.com/zh-cn/library/ms188388.aspx
with (pad_index = off, statistics_norecompute = off, sort_in_tempdb = off, ignore_dup_key = off, drop_existing = off, online = off, allow_row_locks = on, allow_page_locks = on)
go
--在之前的索引失效后,再修改索引,避免索引修改失败
alter index [uq_f_userName] on [dbo].[t_login] disable
go
MSSql Server 索引'uq_f_userName' 依赖于 列'f_userName'。由于一个或多个对象访问此列,ALTER TABLE ALTER COLUMN f_userName 失败