用 IDENTITY(-2147483648,1)可以扩大一倍的空间。还有一个办法,既然你的主键可以循环利用,那一定没有用做外键,可以定时(比如两个月一次)进行重建这个表,写个存储过程放到JOB里执行。

解决方案 »

  1.   

    我告诉你,我们公司的产品也有这个BUG,但是你可以算一下大概需要多长时间溢出,如果是十年以后,你就不用担心了
      

  2.   

    我们公司的产品也有这个BUG...
      

  3.   

    to  tripofdream(梦之旅)
    GUID 是什么啊?怎么用啊?谢谢!
      

  4.   

    TO bluesky137(我是一只小小小鸟,想要飞也飞不高)兄:
    GUID----全局唯一标识符
    CREATE TABLE [dbo].[tab] (
    [id] [int] NULL ,
    [guid]  uniqueidentifier ROWGUIDCOL  NOT NULL 
    ) ON [PRIMARY]
    GOALTER TABLE [dbo].[tab] WITH NOCHECK ADD 
     PRIMARY KEY  CLUSTERED 
    (
    [guid]
    )  ON [PRIMARY] 
    GOALTER TABLE [dbo].[tab] WITH NOCHECK ADD 
    CONSTRAINT [DF_tab_guid] DEFAULT (newid()) FOR [guid]
    GO
    试试吧!
      

  5.   

    修改了一下:
    CREATE TABLE tab (id int NULL ,guid  uniqueidentifier ROWGUIDCOL PRIMARY KEY DEFAULT (newid()) NOT NULL )
    GO
    :)
      

  6.   

    uniqueidentifier
    全局唯一标识符 (GUID)。注释
    uniqueidentifier 数据类型的列或局部变量可用两种方法初始化为一个值: 使用 NEWID 函数。
    将字符串常量转换为如下形式(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字)。例如,6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 uniqueidentifier 值。 
    比较运算符可与 uniqueidentifier 值一起使用。然而,排列并非通过比较两个值的位模式来实现。允许对 uniqueidentifier 值执行的操作只有比较 (=, <>, <, >, <=, >=) 和检查 NULL(IS NULL 和 IS NOT NULL)。不允许使用其它算术运算符。所有的列约束及属性(IDENTITY 除外)均允许用于 uniqueidentifier 数据类型。 
      

  7.   

    可以建立一个字段id char(12)
    通过触发器累加id值
      

  8.   

    谢谢tripofdream(梦之旅) 和supsuccess(口气不小),那样做虽然可以生成一个唯一ID,但在程序中如果仅仅用其来定位显得有点性价比不好。
    to smartdonkey(聪明的毛驴)
    char型的字段怎么进行加一操作,是不是要写一些代码?
    谢谢!