设置某个字段中的值不重复

xingeddx 2015-06-11 02:24:39
如题,我的目标是这样的:在给一个表添加新列时同时设置这个列中的值是唯一的,也就是再往这个列写数据时保证数据不重复。 如果不行的话,另外用语句设置也行,但是我这出错,因为发现对象名称和索引名称有重复的键,,,, 请高手赐教
...全文
457 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingeddx 2015-06-11
  • 打赏
  • 举报
回复
手机不能结贴,有时间电脑了结贴
xingeddx 2015-06-11
  • 打赏
  • 举报
回复
引用 10 楼 道玄希言的回复:
[quote=引用 9 楼 xingeddx 的回复:] 这个方法有点麻烦了,看来程序需要修改一些了
如果你数据纪录已经有一列的数据是不重复的,或者找出几个字段一起时, 不重复, 比如数据表总纪录50000行, 查询列 aa, bb group by aa, bb 纪录仍然有50000. 那可以用这个方法插入自增的数据. DECLARE @aa nvarchar(50), @bb nvarchar(50), @tmp int DECLARE cur CURSOR FOR SELECT aa, bb from tbl1 order by aa OPEN cur FETCH NEXT FROM cur INTO @aa, @bb Set @tmp = 1 WHILE @@FETCH_STATUS = 0 BEGIN update tbl1 set abc = @tmp where aa=@aa and bb=@bb set @tmp = @tmp + 1 FETCH NEXT FROM cur INTO @aa, @bb END CLOSE cur DEALLOCATE cur[/quote] 非常感谢,涨见识了
道玄希言 2015-06-11
  • 打赏
  • 举报
回复
引用 9 楼 xingeddx 的回复:
这个方法有点麻烦了,看来程序需要修改一些了
如果你数据纪录已经有一列的数据是不重复的,或者找出几个字段一起时, 不重复, 比如数据表总纪录50000行, 查询列 aa, bb group by aa, bb 纪录仍然有50000. 那可以用这个方法插入自增的数据. DECLARE @aa nvarchar(50), @bb nvarchar(50), @tmp int DECLARE cur CURSOR FOR SELECT aa, bb from tbl1 order by aa OPEN cur FETCH NEXT FROM cur INTO @aa, @bb Set @tmp = 1 WHILE @@FETCH_STATUS = 0 BEGIN update tbl1 set abc = @tmp where aa=@aa and bb=@bb set @tmp = @tmp + 1 FETCH NEXT FROM cur INTO @aa, @bb END CLOSE cur DEALLOCATE cur
xingeddx 2015-06-11
  • 打赏
  • 举报
回复
引用 6 楼 道玄希言的回复:
一个最笨的方法: 添加一新的列. 先不要设置成主键; 保存, 游标插入自增数据到该列; 再设置该列为主键.
这个方法有点麻烦了,看来程序需要修改一些了
xingeddx 2015-06-11
  • 打赏
  • 举报
回复
引用 4 楼 还在加载中灬的回复:
我说的不是新加列里面有没有数据

我说的是旧表,有没有多条数据

有的话,新列就会有多个NULL,这样加唯一约束 就会出错
我的表中已经有数据了,看来不好办了
xingeddx 2015-06-11
  • 打赏
  • 举报
回复
引用 4 楼 还在加载中灬的回复:
我说的不是新加列里面有没有数据

我说的是旧表,有没有多条数据

有的话,新列就会有多个NULL,这样加唯一约束 就会出错
要更新这个列的数据为不重复的值。这意思是把所有记录的这一列都写上值并且不重复吗
道玄希言 2015-06-11
  • 打赏
  • 举报
回复
一个最笨的方法: 添加一新的列. 先不要设置成主键; 保存, 游标插入自增数据到该列; 再设置该列为主键.
Cherise_huang 2015-06-11
  • 打赏
  • 举报
回复
一楼说的很对 后期 如果是要对某一列增加 UNIQUE 约束,可以通过 MODIFY 的方式处理。 如果是对多个列增加 UNIQUE 约束,通过 新增一个 UNIQUE 的约束实现。
还在加载中灬 2015-06-11
  • 打赏
  • 举报
回复
我说的不是新加列里面有没有数据

我说的是旧表,有没有多条数据

有的话,新列就会有多个NULL,这样加唯一约束 就会出错
xingeddx 2015-06-11
  • 打赏
  • 举报
回复
引用 1 楼 还在加载中灬的回复:
如果你表中已有多条数据,这显然是做不到的

你在新加列后,要更新这个列的数据为不重复的值
才能加唯一约束

或者 你新加的列是自增列
主要是这个SQL语句我不会写,老出错
xingeddx 2015-06-11
  • 打赏
  • 举报
回复
引用 1 楼 还在加载中灬的回复:
如果你表中已有多条数据,这显然是做不到的

你在新加列后,要更新这个列的数据为不重复的值
才能加唯一约束

或者 你新加的列是自增列
这个新列是我新加的,里面保证没有数据
还在加载中灬 2015-06-11
  • 打赏
  • 举报
回复
如果你表中已有多条数据,这显然是做不到的

你在新加列后,要更新这个列的数据为不重复的值
才能加唯一约束

或者 你新加的列是自增列

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧