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

时间:2015-06-17 08:50:29

标签: sql sql-server

现在我有一张包含表主键的成员表' id'随着自动递增。

我想要而不是自动增量,它将生成5-6位的随机整数并将其作为' id '。正如每个人的身份一样。是主键,因此生成的int将是唯一的。在sql server上实现这一点的任何想法都会有所帮助。

4 个答案:

答案 0 :(得分:0)

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

select ceiling(RAND()*1000000)

答案 1 :(得分:0)

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

SELECT ABS(CHECKSUM(NEWID())) % 100000
如果您想将数字限制为最多5位数,则

% 100000是可选的。

注意: 使用随机生成的群集密钥会在插入期间导致页面拆分。

答案 2 :(得分:0)

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

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

当还指定增量值时> 1,你当然是松散的价值观。使用预期的记录数检查值范围。

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

答案 3 :(得分:0)

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

- 或使用

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