运行 仅通过触发器对插入的行更新语句

Run update statement on inserted rows only through a trigger

我创建了一个触发器,用于在添加到发票 Table [InvoiceTable].

时更新发票记录上的自定义日期 [Invoice.ContractStartDate]

下面的触发器有效,但我希望 运行 仅用于 插入的记录 并避免对 DateTimeCreated 使用 WHERE 子句。

我仍然需要 WHERE 子句 Contract.Days <> ' '

使用 AFTER INSERTINSTEAD OF INSERT 是否可行?

 CREATE TRIGGER UpdateContractStartDate ON InvoiceTable 
 FOR INSERT AS
 UPDATE InvoiceTable
 SET InvoiceTable.ContractStartDate = InvoiceTable.InvoiceDate + Contract.Days
 FROM Contract
 INNER JOIN InvoiceTable
     ON InvoiceTable.ContractID = Contract.ContractID
 WHERE (CAST(InvoiceTable.DateTimeCreated AS DATE) = CAST(GETDATE() AS DATE))
 AND (Contract.Days <> '')

您没有提供关于您的 table 架构的任何信息,但假设您有一个唯一的键“Id”

典型的语法是

Update it set
  it.ContractStartDate = it.InvoiceDate + c.Days
from inserted i
join InvoiceTable it on it.Id=i.Id
join Contract c on c.ContactId=it.ContractId and c.Days <> ''