现在我有一张包含表主键的成员表' id'随着自动递增。
我想要而不是自动增量,它将生成5-6位的随机整数并将其作为' id '。正如每个人的身份一样。是主键,因此生成的int将是唯一的。在sql server上实现这一点的任何想法都会有所帮助。
答案 0 :(得分:0)
尝试使用如下的RAND功能生成6位数的随机数
select ceiling(RAND()*1000000)
答案 1 :(得分:0)
您可以将CHECKSUM
与NEWID()
一起使用,并将其用作此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