当前位置: 代码迷 >> Sql Server >> 设立某个字段中的值不重复
  详细解决方案

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

热度:82   发布时间:2016-04-24 09:00:30.0
设置某个字段中的值不重复
如题,我的目标是这样的:在给一个表添加新列时同时设置这个列中的值是唯一的,也就是再往这个列写数据时保证数据不重复。
如果不行的话,另外用语句设置也行,但是我这出错,因为发现对象名称和索引名称有重复的键,,,,
请高手赐教
------解决思路----------------------
如果你表中已有多条数据,这显然是做不到的

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

或者 你新加的列是自增列
------解决思路----------------------
一楼说的很对
后期
如果是要对某一列增加 UNIQUE 约束,可以通过 MODIFY 的方式处理。

如果是对多个列增加 UNIQUE 约束,通过 新增一个 UNIQUE 的约束实现。

------解决思路----------------------
一个最笨的方法:
添加一新的列. 先不要设置成主键;
保存,  游标插入自增数据到该列;
再设置该列为主键.
------解决思路----------------------
引用:
这个方法有点麻烦了,看来程序需要修改一些了



如果你数据纪录已经有一列的数据是不重复的,或者找出几个字段一起时, 不重复, 
比如数据表总纪录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
  相关解决方案