【发布时间】:2021-12-18 17:51:22
【问题描述】:
我正在尝试跟踪将在 Excel 表 (SQL Spreads) 中输入数据的库存,然后更新 SQL 表,然后收集该数据的总和并将其放到另一个表中,然后生成时间戳到何时它已更改/更新/插入。 带有突出显示列的图片是我想要在其中包含数据的地方。
(TotalBinLo --> Binlocation)
and then when Binlocation is populated (inserted/updated/deleted) generating a timestamp (MM/DD/YYYY HH:MM:SS)
这就是我到目前为止所提出的。
---This Trigger is working when pulling data from one table into another--
Create Trigger tr_BC_totalbinLoc
on bincount
After Update
AS
Begin
update OnHandInv
set OnHandInv.binlocation = bincount.totalbinlo
from bincount
inner join OnHandInv on bincount.partnumber = OnHandInv.PartNumber;
End
---另一个触发器(有效),但输入所有行的日期。 (不要)(只需要一栏。)
Create Trigger tr_totalbinLoc_OHI
On Onhandinv
After Update
AS
Update Onhandinv
set dateupdated = getutcdate()
where PartNumber in (select distinct PartNumber from onhandinv)
【问题讨论】:
-
为什么您的两个触发器都没有引用
inserted或deleted对象? -
@LSerni 这是我试图用我能够总结的数据做的事情。
-
@Larnu 我可以把它放在我的触发器中。我只是没有得到那么远的atm。我还在学习,所以我会尝试分步做事,以防万一我做了一件事,然后刹车或绊倒另一件事。
-
“但输入所有行的日期” 因为,同样,您没有引用
inserted/deleted。当然,它会影响每一行;这就是你告诉它要做的事情。{onhandinv}.PartNumber in (select distinct PartNumber from onhandinv)也完全没有意义。这将评估为 TRUE,除非PartNumber的值为NULL。该子句也可以是PartNumber IS NOT NULL。 -
@Larnu 我明白了,我会使用“IF THEN”子句吗?
标签: sql-server triggers