como todos sabemos, el marco entidad no puede contener datos geográficos. Entonces mi idea era especificar la longitud y la latitud como decimales en mi modelo. Después de ejecutar el script SQL para crear las tablas, comenzaría otro script para agregar una columna de geografía. Entonces me gustaría actualizar esta columna en cada INSERT o UPDATE (en longitud y latitud) mediante un disparador. ¿Está bien el siguiente disparador o es algo malo? Lo estoy preguntando porque no estoy muy familiarizado con el disparador, pero funciona por ahora.Disparador para INSERTAR y ACTUALIZAR en la misma tabla
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
sería feliz si alguien me podría ayudar.
Saludos
Editar:
guión parece que:
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
)
)
obras, pero no puede consultar esa columna:/ Thx
Su gatillo provocará integridad de los datos problemas si algún proceso alguna vez actualiza o inserta un lote de registros. Nunca escriba un disparador suponiendo que solo se insertará un registro. – HLGEM
cómo modificarlo? – john
Vote por este artículo de Connect: http://connect.microsoft.com/SQLServer/feedback/details/378126/how-to-persist-a-geometry-geography-or-geography-column –