【问题标题】:After insert trigger for updating a column插入触发器后更新列
【发布时间】:2013-10-14 16:35:30
【问题描述】:

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

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

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

    是的,您需要加入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
    

    【讨论】:

      猜你喜欢
      • 2015-11-06
      • 2021-03-08
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多