我试图在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
Computed column ‘BufferedGeometry’ in
table ‘Test’ cannot be persisted
because the column type,‘geometry’,
is a non-byte-ordered CLR type.
我有搜索BOL和网络,似乎找不到我的问题的解决方案.我真的希望它能坚持下去,所以我可以有效地进行索引.我可以在代码中设置它,但是随着我在某个时间点需要两个值,我可能会出现数据不一致.
解决方法
我想你可以使用触发器来计算它并将其存储到[BufferedGeometry]字段中