如我有表 
ID  UserName UserPass ... 
1  AAA      1234 
2  VVV      1234 ID为主键 现在要求UserName不能重复,在SQL中要怎么写约束 
-------------------------------
根据CSDN的朋友提供:
ALTER TABLE  ES_EmailAddress
    ADD CONSTRAINT UNIQUE_Email UNIQUE(Email);
CREATE  UNIQUE  INDEX UNIQUE_Email
    ON  ES_EmailAddress( Email ) 
但提示

消息 1505,级别 16,状态 1,第 1 行
CREATE UNIQUE INDEX 终止,因为发现对象名称 'dbo.ES_EmailAddress' 和索引名称 'UNIQUE_Email' 有重复的键。重复的键值为 (1)。
语句已终止。
怎么回事谢谢

解决方案 »

  1.   


    CREATE  UNIQUE  INDEX UNIQUE_Emailasdf 
        ON  ES_EmailAddress( Email ) 
      

  2.   


    CREATE  UNIQUE  INDEX UNIQUE_Emailasdf 
        ON  ES_EmailAddress( Email ) 
      

  3.   

    先删除原来的索引:
    drop index ES_EmailAddress.UNIQUE_Emai
    再运行
    CREATE  UNIQUE  INDEX UNIQUE_Email 
        ON  ES_EmailAddress( Email ) 
      

  4.   


    --这两个语句,都是建立同一约束的,执行一个就OK了。
    ALTER TABLE  ES_EmailAddress 
        ADD CONSTRAINT UNIQUE_Email UNIQUE(Email); 
    CREATE  UNIQUE  INDEX UNIQUE_Email 
        ON  ES_EmailAddress( Email ) 
      

  5.   

    RE:我知道,我上面写两条是说这两个语句都不能用
    是不是我的ID已经是主键且是自增的原因,导致Email字段没有办法加约束呢谢谢
      

  6.   

    不是,因为从错误提示看,这个字段已经加上unique唯一性索引了。
      

  7.   

    会不会是你的表中现在已经有Email字段重复了。
      

  8.   

    打开IDE看看是不是已经有索引了呢
      

  9.   

    只要创建唯一索引即可:
     CREATE  UNIQUE  INDEX UNIQUE_Email 
        ON  ES_EmailAddress( Email ) 
      

  10.   


    我的ID已经是ID键和自建,不能重复
    然后现在我想让Mail字段也不能重复
      

  11.   

    对mail字段建立个唯一索引就行了.
      

  12.   

    ALTER TABLE  ES_EmailAddress 
        ADD CONSTRAINT UNIQUE_Email UNIQUE(Email); 
    CREATE  UNIQUE  INDEX UNIQUE_Email 
        ON  ES_EmailAddress( Email ) 
    --
    只要执行基本一个就行了