Déclencheur pour INSÉRER et mettre à JOUR sur la même table

comme nous le savons tous, entity framework ne pouvez pas tenir la géographie de données. Donc, mon idée était, pour indiquer la latitude et la longitude décimale dans mon modèle. Après l'exécution du script SQL de création des tables, je voudrais commencer un autre script pour ajouter une colonne géographique. Ensuite, je voudrais mettre à jour cette colonne sur chaque INSERTION ou de mise à JOUR (longitude et latitude) par un déclencheur. Est le trigger bon, ou est-ce quelque chose de mauvais? Je demande parce que je ne suis pas très familier avec déclencheur, mais il fonctionne pour l'instant.


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

Serait heureux si quelqu'un pouvait m'aider.

Ce qui concerne

Edit:

script ressemble à ça:


ALTER TABLE [People] ADD Location_Geography AS (
    CONVERT(GEOGRAPHY, CASE
        WHEN Location_Latitude  0 AND Location_Longitude  0 THEN
            geography::STGeomFromText('POINT(' + CONVERT(VARCHAR, Location_Longitude) + ' ' + CONVERT(VARCHAR, Location_Latitude) + ')',4326)
        ELSE
            NULL
    END
    )
)

fonctionne, mais ne permet pas d'interroger cette colonne :/
Thx

Votre déclencheur sera la cause de problèmes d'intégrité des données si un processus jamais les mises à jour de plaquettes ou d'un lot d'enregistrements. Ne jamais écrire un déclencheur en supposant qu'un enregistrement sera inséré.
comment le modifier?
Voter pour cet élément de connexion: connect.microsoft.com/SQLServer/feedback/details/378126/...

OriginalL'auteur john | 2011-04-06