如何将点设置为地理列的默认值?

时间:2014-07-17 08:28:29

标签: sql sql-server spatial geography

我有这个SQL命令创建一个表格,其中包含GEOGRAPHY - 类型的空间数据列,用于存储纬度/经度对(点)。如何为该列设置默认值?例如,点(0,0)?

CREATE TABLE [dbo].[StationLocations] (
    [Id] [int] NOT NULL,
    [StationId] [int] NOT NULL,
    [Position] [Geography],
CONSTRAINT [PKStationLocations] PRIMARY KEY CLUSTERED ([Id]))

3 个答案:

答案 0 :(得分:4)

试试这个:

CREATE TABLE #TEMP(ID INT,COL1 GEOGRAPHY DEFAULT(CONVERT(GEOGRAPHY,'POINT (0 0)')))
INSERT INTO #TEMP (ID) VALUES(1)
SELECT * FROM #TEMP
ID  COL1
1   0xE6100000010C00000000000000000000000000000000

SELECT ID,CONVERT(VARCHAR,COL1) AS DEF_VALUE FROM #TEMP
ID  DEF_VALUE
1   POINT (0 0)

在你的情况下

CREATE TABLE [dbo].[StationLocations] (
    [Id] [int] NOT NULL,
    [StationId] [int] NOT NULL,
    [Position] [Geography] DEFAULT(CONVERT(GEOGRAPHY,'POINT (0 0)')),
CONSTRAINT [PKStationLocations] PRIMARY KEY CLUSTERED ([Id]))

答案 1 :(得分:1)

不确定这是否是最好的方法,但是,使用this answer作为参考,您可以定义它like this

ALTER TABLE dbo.StationLocations
ADD CONSTRAINT DF_StationLocations_Position
DEFAULT geography::STPointFromText('POINT (0 0)', 4326) FOR Position
;

答案 2 :(得分:0)

我认为你不能直接做到。您可以以环形方式使用插入触发器,但这不是一个完全令人满意的解决方案。