我有3个表数据表,LookUp_1,LookUp_2 ,所有表都具有主键列 id 。 score1_id和score2_id 列是外键列。在LookUp_1 中具有 id的score1_id链接以及在LookUp_2 中具有 id的score2_id链接。
我的问题是: 我需要创建一个插入后触发器,该触发器会将计算列从null更新为特定的数字/值。这仅在将新记录插入到数据表中时发生,并且只应影响新创建的记录。因此,对于我的示例, id 1 是一条新插入的记录,现在触发器应继续并使用 score1_id和score2_id <来更新计算列 / strong>。因此,它应该进入 LookUp1和LookUp2 并检查每个ID的权重。因此,例如:3 = 7和2 = 3。因此,在触发器完成后,记录应使用计算列= 21更新(因为我们要乘以权重)
因此更新的表记录应如下所示:
关于如何执行此操作的任何建议?还是有人想到的一些例子?
我将不胜感激!
答案 0 :(得分:0)
这是您的触发器(那么您需要完成它)
现在您必须更新列名。
CREATE TRIGGER [triggername]
ON [data]
AFTER
INSERT
AS
BEGIN
declare @v1 int = (Select weight from lookup1 where id=inserted.scoreid1
,@v2 int = (Select weight from lookup2 where id=inserted.scoreid2)
update data
set calculation = @v1*@v2
where inserted.id = data.id
END
或多次插入:
CREATE TRIGGER [triggername]
ON [data]
AFTER
INSERT
AS
BEGIN
update data
set calculation = l1.weight*l2.weight
from data d
join lookup_1 l1 on d.scoreID1=l1.id
join lookup_2 l2 on d.scoreid2=l2.id
join inserted on inserted.id = d.id
END