插入触发器后更新列

时间:2013-10-14 08:15:23

标签: sql sql-server tsql

我正在编写一个插入后触发器,试图找到这个问题的解决方案:

https://stackoverflow.com/questions/19355644/dead-ends-all-around-trying-to-update-geography-column

我不确定的是如何编写触发器以将here解释为多个记录作为您需要编码的潜力。

到目前为止,我有这个,但它仅适用于单个记录,因此如果表中有100个记录插入批次99将不会更新。到目前为止,这是我的理解,可能不正确。

create trigger tri_inserts on [dbo].[Address]
after insert
as
set nocount on

update Address
SET AddyGeoCode = GEOGRAPHY::Point(inserted.AddyLat, inserted.Addylong, 4326)
GO

我是否会说要加入插入的表来发现/更新所有新记录?

如果需要,我的地址表架构是AddyLat& AddyLong decimal(7,4)和AddyGeoCode Geography。

TIA

1 个答案:

答案 0 :(得分:2)

是的,您需要加入inserted表。

UPDATE a
SET a.AddyGeoCode = GEOGRAPHY::Point(a.AddyLat, a.Addylong, 4326) --you can use AddyLat&Long from either a or i
FROM Address a 
INNER JOIN inserted i ON a.id = i.id --whatever are your PK columns