Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Try a PERSISTED COMPUTED column: <a href="http://msdn.microsoft.com/en-us/library/ms191250.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms191250.aspx</a> (might need an outer cast here)</p> <pre><code>Location_Geography AS ( CASE WHEN Location_Latitude &lt;&gt; 0 AND Location_Longitude &lt;&gt; 0 THEN geography::STGeomFromText('POINT(' + CONVERT(VARCHAR(100),Location_Longitude) + ' ' + CONVERT(VARCHAR(100),Location_Latitude) + ')',4326) ELSE NULL END ) </code></pre> <p>This avoids having to make a trigger with pretty much the same overall effect.</p> <p>Triggers: <a href="http://msdn.microsoft.com/en-us/library/ms191524.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms191524.aspx</a></p> <p>Your trigger could probably be modified as:</p> <pre><code>CREATE TRIGGER Update_Geography ON [People] FOR INSERT, UPDATE AS BEGIN UPDATE [People] SET Location_Geography = geography::STGeomFromText('POINT(' + CONVERT(VARCHAR(100),Location_Longitude) + ' ' + CONVERT(VARCHAR(100),Location_Latitude) + ')',4326) WHERE (UPDATE(Location_Longitude) OR UPDATE(Location_Latitude)) AND Id IN (SELECT ins.Id FROM inserted ins) END END </code></pre> <p>Here's an example showing both manual and calc'ed columns:</p> <pre><code>IF EXISTS ( SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SO5572806]') AND type IN (N'U') ) DROP TABLE [dbo].[SO5572806] GO CREATE TABLE SO5572806 ( lo DECIMAL(8, 5) NOT NULL ,la DECIMAL(8, 5) NOT NULL ,man GEOGRAPHY NULL ,calc AS (CONVERT(GEOGRAPHY, CASE WHEN la &lt;&gt; 0 AND lo &lt;&gt; 0 THEN GEOGRAPHY::STGeomFromText('POINT(' + CONVERT(VARCHAR, lo) + ' ' + CONVERT(VARCHAR, la) + ')', 4326) ELSE NULL END)) ) GO INSERT INTO dbo.SO5572806 (lo, la) VALUES (0, 0), (-90, 30) UPDATE dbo.SO5572806 SET man = GEOGRAPHY::STGeomFromText('POINT(' + CONVERT(VARCHAR, lo) + ' ' + CONVERT(VARCHAR, la) + ')', 4326) WHERE lo &lt;&gt; 0 AND la &lt;&gt; 0 SELECT * FROM dbo.SO5572806 </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload