插入时根据外键表值设置列值

时间:2020-05-20 09:53:07

标签: sql sql-server database

我的SQL Server中有3个表:Flat,Worker,Deal(其他表在这里不起作用)。 交易 表的 金额 列值应基于给定的 单位 < / strong>的 价格 列值和 工人 份额 列值。

我要执行INSERT操作,例如:

  insert into KursIsi.dbo.Deal
  values(amount,GETDATE(), 1, null, 2);

其中1是 Flat 表的外键值,2是 Worker 的外键值,我希望将 amount 值设置为{ {1}}

我不知道该怎么做,但是我猜想它可能与触发器有关。

enter image description here

已编辑:我添加了一些数据示例,以说明其外观。

这是平面表数据示例。请注意,它的价格为150000 enter image description here

这是Worker表数据示例。请注意,该工人的份额为50000

enter image description here

这是“交易”表中的最终结果。请注意,金额为200000,其计算方式为Flat(price) where ID = 1 + Worker(share) where ID = 2;,其中在Deal表中给出的外键为flat和worker列的值。现在这一切都由我完成,我基本上插入了200000的值,但是我想要的是根据给定的单位和工人自动设置Deal table的金额

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以简单地通过将两个表连接起来作为INSERT语句的输入来投影计算。

INSERT INTO Deal 
SELECT 
    F.Price + W.Share, GETDATE(), F.ID, NULL, W.worker_number
FROM 
    Flat F 
    INNER JOIN Worker W ON W.ID = F.ID