Триггер для 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

Был бы рад, если бы кто-нибудь мог мне помочь. Thx

5
задан john 6 April 2011 в 22:59
поделиться