T-SQL(触发器):使用来自另一个插入记录的数据更新插入的记录?

时间:2017-01-23 08:55:36

标签: sql-server database-trigger

是否可以使用触发器从正在插入另一个表的记录中更新一个表中的记录?

我有4个表:Purchase_order,Notes,PO_Address,table Address

我想使用表格地址中的地址更新表格注释。

如果我创建一个带有注释的新Purchase_order,表格Notes中的记录也将自动创建。 Notes具有Purchase_order中的外键。

如果Purchase_order还有来自表地址的递送地址,则将在PO_Address表中创建另一条记录,其中包含来自Purchase_order和Address的外键。

我想要做的是:创建一个可以在Note上附加地址的触发器。

我的问题是:尝试加入PO_Address,但是Purchase_order或Note还没有保存到db,所以我得到null错误。 “无法使用null更新Note”。

我试图在大多数不同的表上创建触发器,但我不知道最后更新了哪个表,所以它失败了......

它适用于更新,但问题是创建新的purchase_order时。

示例代码:

USE [Mydatabase]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Create trigger [dbo].[_Note_Address] 
on  [dbo].[Note]
after insert, update
as
begin
    SET NOCOUNT ON; 
    update Note
    set text = text + ---adress here
    from address a
    join ... ---and so on.
    where note_id in (select note_id from inserted) 
end

示例数据:

[Purchase_order]
ID____|TotalAmount
1     |300
2     |900
5     |1200

[Address]
ID____|Street___
10    | One Street 33
20    | 2nd Street 55
30    | Mystreet 10

[Note]
ID___|Text___|FK_PO_Key
5    | '123' |1
12   | 'abc' |5

[PO_Address]
FK_PO_Key | FK_Address_Key
2         | 10
5         | 30

0 个答案:

没有答案