Как сохранить вычисленный столбец ГЕОМЕТРИЯ или ГЕОГРАФИЯ - PullRequest
10 голосов
/ 23 октября 2008

Я пытаюсь создать таблицу под SQL Server 2008, содержащую столбец GEOMETRY и его расчетный вариант.

Учитывая следующую таблицу, где вычисляемый столбец возвращает буферизованную геометрию:

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

Проблема в том, что это приводит к следующей ошибке:

Сообщение 4994, Уровень 16, Состояние 1, Строка 2 Вычисляемый столбец BufferedGeometry в таблица «Тест» не может быть сохранена потому что тип столбца, «геометрия», тип CLR без упорядочивания байтов.

У меня есть поиск BOL и в Интернете, и я не могу найти решение своей проблемы. Я действительно хотел бы, чтобы это было сохранено, чтобы я мог индексировать это эффективно. Я мог бы установить это в коде, но тогда у меня есть возможность противоречивых данных, поскольку мне требуются оба значения в некоторый момент времени.

Кто-нибудь играл с этим и знает решение или обходной путь?

Обновление: Microsoft добавила эту функцию в SQL Server 2012.

Ответы [ 2 ]

4 голосов
/ 24 октября 2008

Полагаю, вы можете использовать триггер для его вычисления и сохранения в поле [BufferedGeometry]

1 голос
/ 24 июля 2013

У кого еще есть такая проблема: SQL Server 2012 теперь позволяет это

...