我有以下创建表的脚本:
CREATE TABLE [dbo].[Persons]
(
[Id] INT IDENTITY(1,1) NOT NULL,
[Name] NVARCHAR(250) NOT NULL,
[Surname] NVARCHAR(250) NOT NULL,
[NumberOfNotes] INT NOT NULL,
[TotalCash] FLOAT NOT NULL,
[Result] AS ([NumberOfNotes] * [TotalCash] * ROUND(RAND() * 2, 0)),
CONSTRAINT [PK_Persons] PRIMARY KEY ([Id] ASC)
);
该表已正确创建,每当我插入一个新人时,都会计算Result
。问题是每次我进行选择时都会重新评估它。我希望该记录的计算值保持不变。我该如何实现?预先感谢!
答案 0 :(得分:1)
我的简单技巧是播种rand()
:
[Result] AS ([NumberOfNotes] * [TotalCash] * ROUND(RAND(id) * 2, 0)),
基本上,这是使用“确定性”随机数生成器。您也可以通过其他方式做到这一点。
或者,您可以在向表中插入新行时为其分配一个值。