INSERT INTO with Rand()函数抛出错误

问题描述 投票:0回答:1

我有一个表,Benefit,其中政策编号将随机生成,并且当然应该唯一。以下是我的声明和查询。

INSERT INTO Benefit([Company Name], [Policy #]) VALUES ('Assumption Life', RAND(100)*100)
INSERT INTO Benefit([Company Name], [Policy #]) VALUES ('Aviva Canada', RAND(1)*12)
INSERT INTO Benefit([Company Name], [Policy #]) VALUES ('Blue Cross' RAND(100)*100)
INSERT INTO Benefit([Company Name], [Policy #]) VALUES ('Health & Dental Insurance' RAND(100)*100)

我得到答复:

Started executing query at Line 123
(1 row affected)
(1 row affected)
Msg 2627, Level 14, State 1, Line 3
Violation of UNIQUE KEY constraint 'UQ__Benefit__2E118E21CDDEB4E7'. Cannot insert duplicate key in object 'dbo.Benefit'. The duplicate key value is (71).
The statement has been terminated.
Msg 2627, Level 14, State 1, Line 4
Violation of UNIQUE KEY constraint 'UQ__Benefit__2E118E21CDDEB4E7'. Cannot insert duplicate key in object 'dbo.Benefit'. The duplicate key value is (71).

前两个成功执行,因为RAND()函数有些不同,但是从第3个开始,它会引发重复异常,因为它与第一个记录相同。

我尝试过RAND(),它总是分配0。从第二行开始,抛出相同的错误。

为什么不生成随机数?我不清楚如何使用RAND()功能吗?

sql sql-server database rdbms
1个回答
1
投票

This explains the usage of RAND

感兴趣的语句是“ 每次使用特定种子值时,RAND函数将返回可重复的随机数序列。

要在两个值(范围)之间创建一个随机的十进制数,可以使用以下公式:

SELECT RAND()*(b-a)+a;

我希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.