计算列中的随机值

问题描述 投票: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             NULL,
    [Result] AS ([NumberOfNotes] * [TotalCash] * (RAND()*(100-30)+30)),

    CONSTRAINT [PK_Persons] PRIMARY KEY ([Id] ASC)
);

在插入新记录时,我的情况中仅有的两种可能的情况是:

  • 使用[名称],[姓氏],[NumberOfNotes],[结果]插入新记录>
  • 使用[名称],[姓氏],[NumberOfNotes],[TotalCash]插入新记录
  • 因此,我在创建过程中必须满足以下两个条件

  1. 我应该能够在计算出[结果]的情况下插入新记录,以防我不插入它。计算公式为[NumberOfNotes] * [TotalCash] * SomeRandomNumber,并且我确定在这种情况下,[TotalCash]始终存在于公式中,并且永远不会为null。但是,如果我改为手动插入[Result],则它将插入我的值,而不是计算的值(在这种情况下,[TotalCash]可以为null)。 每个记录的
  2. << SomeRandomNumber
  3. 是固定的。到目前为止,我已经尝试过(RAND()*(100-30)+30)),因为我想要一个介于30到100之间的随机数,但是对于我在记录上运行的每个选择,它都会不断变化。相反,如果我将其作为(RAND(Id)*(100-30)+30))播种,则对于多条记录是相同的。
我具有创建表的以下脚本:CREATE TABLE [dbo]。[人]([Id] INT IDENTITY(1,1)NOT NULL,[名称] NVARCHAR(250)NOT NULL,[Surname] .. 。
sql sql-server calculated-columns
1个回答
0
投票
如果您希望能够实际写入Result列,则不能使用计算列。
© www.soinside.com 2019 - 2024. All rights reserved.