小编joh*_*ohn的帖子

在同一个表上触发INSERT和UPDATE

正如我们所知,实体框架无法保存地理数据.所以我的想法是,在我的模型中将经度和纬度指定为十进制.在执行用于创建表的SQL脚本之后,我将启动另一个用于添加地理列的脚本.然后我想通过触发器在每个INSERT或UPDATE(经度和纬度)上更新此列.以下触发器是否可以,或者是不是很糟糕?我问,因为我对触发器不太熟悉,但它现在有效.


CREATE TRIGGER Update_Geography 
ON [People]
FOR INSERT, UPDATE
AS
BEGIN
    DECLARE @longitude DECIMAL(8, 5), @latitude DECIMAL(8, 5)

    SET @longitude = (SELECT ins.Location_Longitude FROM inserted ins)
    SET @latitude = (SELECT ins.Location_Latitude FROM inserted ins)

    IF (@longitude != 0 AND @latitude != 0)
    BEGIN
        UPDATE [People]
        SET
            Location_Geography = geography::STGeomFromText('POINT(' + CONVERT(VARCHAR(100),@longitude) + ' ' +  CONVERT(VARCHAR(100),@latitude) + ')',4326)
        WHERE
            Id = (SELECT ins.Id FROM inserted ins)
    END
END

如果有人能帮助我,我会很高兴的.

问候

编辑:

脚本看起来像这样:


ALTER TABLE [People] ADD Location_Geography AS (
    CONVERT(GEOGRAPHY, …
Run Code Online (Sandbox Code Playgroud)

sql-server triggers

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

sql-server ×1

triggers ×1