每次创建表时都会计算计算列

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

我具有创建表的以下脚本:

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。问题是每次我进行选择时都会重新评估它。我希望该记录的计算值保持不变。我该如何实现?预先感谢!

sql sql-server calculated-columns
1个回答
0
投票

我的简单技巧是播种rand()

[Result] AS ([NumberOfNotes] * [TotalCash] * ROUND(RAND(id) * 2, 0)),

基本上,这是使用“确定性”随机数生成器。您也可以通过其他方式执行此操作。

或者,当您在表中插入新行时,可以给它分配一个值。

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