Вы не объявляете datatype
или обнуляемость самостоятельно
CREATE TABLE [dbo].[tblLocations](
[latitude] [float] NOT NULL,
[longitude] [float] NOT NULL,
[location] [varchar](500) NOT NULL,
[timestamp] [datetime] NOT NULL,
[point] AS geography::Point(latitude, longitude, 4326)
)
Обычно SQL Server будет считать столбец обнуляемым , если вы не добавите ISNULL()
вокруг формулы .
Однако я только что попробовал следующее определение столбца
[point2] AS ISNULL(geography::Point(latitude, longitude, 4326),
geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326))
и это все равно отображается как is_nullable
в sys.computed_columns
, поэтому не похоже, что это применимо к типам данных CLR (вероятно, поскольку SQL Server не верит, что они являются детерминированными).
Редактировать: Однако является синтаксически допустимым для указания NOT NULL
, пока вычисляемый столбец помечается как PERSISTED
, т.е.
[point] AS geography::Point(latitude, longitude, 4326) PERSISTED NOT NULL
В этом конкретном случае, однако, попытка создать таблицу с таким определением выдает ошибку времени выполнения.
Вычисляемый столбец 'точка' в таблице
«Foo» не может быть сохранен, потому что
тип столбца, география, является
не-байтовый тип CLR.