如何持久计算GEOMETRY或GEOGRAPHY列

时间:2008-10-23 19:00:31

标签: sql-server sql-server-2008 spatial

我正在尝试在SQL Server 2008下创建一个包含 GEOMETRY 列及其计算变体的表。

考虑下表,计算列返回缓冲的几何图形:

CREATE TABLE [dbo].[Test] (
    [Geometry]      GEOMETRY    NOT NULL,
    [Buffer]        FLOAT       NOT NULL,
    [BufferedGeometry] AS ([Geometry].STBuffer([Buffer])) PERSISTED
);

这样做的问题是导致以下错误:

  

Msg 4994,Level 16,State 1,Line 2   计算列'BufferedGeometry'中   表'Test'无法持久化   因为列类型'几何',   是一种非字节顺序的CLR类型。

我有搜索BOL和网络,似乎无法找到我的问题的解决方案。我真的希望它能够持久化,以便我可以有效地对其进行索引。我可以在代码中设置它,但随后我可能会有不一致的数据,因为我需要在某个时间点使用这两个值。

有人玩这个并知道解决方案或解决方法吗?

更新:Microsoft已在SQL Server 2012中添加了此功能。

2 个答案:

答案 0 :(得分:4)

我猜您可以使用触发器来计算它并将其存储到[BufferedGeometry]字段

答案 1 :(得分:1)

谁还有这样的问题:SQL Server 2012现在允许它