--或者建立唯一約束
ALTER TABLE TB
ADD CONSTRAINT UN UNIQUE (ID)

解决方案 »

  1.   

    可以弄个自动编号,按时间和记录数
    --取得随机数的视图
    CREATE VIEW v_RAND
    AS
    SELECT re=STUFF(RAND(),1,2,'')
    GO--生成随机编号的函数
    CREATE FUNCTION f_RANDBH(@BHLen int)
    RETURNS varchar(50)
    AS
    BEGIN
    DECLARE @r varchar(50)
    IF NOT(ISNULL(@BHLen,0) BETWEEN 1 AND 50)
    SET @BHLen=10lb_bh: --生成随机编号的处理
    SELECT @r=re FROM v_RAND
    WHILE LEN(@r)<@BHLen
    SELECT @r=@r+re FROM v_RAND
    SET @r=LEFT(@r,@BHLen) --检查编号在基础数据表中是否存在
    IF EXISTS(SELECT * FROM tb WITH(XLOCK,PAGLOCK) WHERE BH=@r)
    GOTO lb_bh RETURN(@r)
    END
    GO--创建引用生成随机编号的函数
    CREATE TABLE tb(
    BH char(10) PRIMARY KEY DEFAULT dbo.f_RANDBH(10),
    col int)--插放数据
    BEGIN TRAN
    INSERT tb(col) VALUES(1)
    INSERT tb(col) VALUES(2)
    INSERT tb(col) VALUES(3)
    COMMIT TRAN
    SELECT * FROM tb
    GO
    /*--结果
    BH                   col 
    ------------------------------ ----------- 
    6128177354           1
    7378536177           3
    8387186129           2
    --*/
      

  2.   

    用 unique 约束就行了。primary 是默认 unique 约束罢了。
      

  3.   

    主键本身就具有唯一性吧 
    你建立一个唯一约束吧
    ALTER TABLE TB
    ADD CONSTRAINT UN UNIQUE (ID)
      

  4.   

    ID设置为int型,如果不够大,设置为bigint型.
    select max(id) + 1 as id from tb得到的ID即为你需要增加的ID
      

  5.   

    使用Guid:
    CREATE TABLE Globally_Unique_Data
    (guid uniqueidentifier CONSTRAINT Guid_Default DEFAULT NEWID(),
        Employee_Name varchar(60)
    CONSTRAINT Guid_PK PRIMARY KEY (Guid) );insert Globally_Unique_Data(Employee_Name)
    select 'Employee1'select * from Globally_Unique_Data
    guid                                 Employee_Name
    ------------------------------------ ----------------
    AB9FC6B7-615B-4F48-A3BE-788E3CCCF6A7 Employee1
      

  6.   

    IDENTITY VS uniqueidentifier(Guid)
    自增列不适合多数据库同步交互数据,很有可能主键冲突,Guid可以比较方便实现数据同步,
    但是自增数据容易记忆,而Guid不适合记忆。性能上两者基本差不多。可以参照:http://www.cnblogs.com/houleixx/archive/2008/12/13/id_and_guid.html