首页 文章

唯一随机整数作为主键ID而不是自动增量[重复]

提问于
浏览
3

这个问题在这里已有答案:

现在我有一个成员表,表主键'id'自动递增 .

我想要而不是自动递增,它将 generate a random integer of 5-6 digits 并将其设为' id '. As every 'id'是主键,因此生成的int将是唯一的 . 在sql server上实现这一点的任何想法都会有所帮助 .

4 回答

  • 0

    尝试使用如下的RAND函数生成6位数的随机数

    select ceiling(RAND()*1000000)
    
  • 0

    您可以将 CHECKSUMNEWID() 一起使用,并将其用作 DEFAULT .

    SELECT ABS(CHECKSUM(NEWID())) % 100000
    

    如果要将数字限制为最多5位,则 % 100000 是可选的 .

    Note: 使用随机生成的群集密钥将导致插入期间的页面拆分 .

  • 0

    为避免猜测用户总数,只需在创建数据库时添加随机值作为初始值 .

    CREATE TABLE users
    (
      ID int identity (7854, 7),
    )
    

    当还指定增量值> 1时,您当然会丢失值 . 使用预期的记录数检查值范围 .

    另一个(更好)选项是隐藏用户的主键,如果他们需要查看某些标识,他们应该看到一个与主键分开的值 . 向表中添加另一个值,称为“可见ID”或其他值 .

  • 0
    CREATE TABLE NEWID_TEST
    (
    ID UNIQUEIDENTIFIER DEFAULT NEWID() PRIMARY KEY,
    TESTCOLUMN CHAR(2000) DEFAULT REPLICATE('X',2000)
    )
    GO
    

    -- or use

    CREATE TABLE NEWSEQUENTIALID_TEST
    (
    ID UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID() PRIMARY KEY,
    TESTCOLUMN CHAR(2000) DEFAULT REPLICATE('X',2000)
    )
    GO
    

相关问题