당신은 datatype
를 선언하거나 열이 unless you add an ISNULL()
around the formula 널 (NULL) 가정합니다 일반적으로 SQL 서버에서 자신에게
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)
)
을 Null 허용하지 않습니다.
그러나 난 그냥 다음 열 정의
[point2] AS ISNULL(geography::Point(latitude, longitude, 4326),
geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326))
을 시도하고 여전히 그래서 (SQL Server가 이러한 신뢰하지 않는 아마 그 CLR 데이터 유형에 적용처럼 보이지 않는 sys.computed_columns
에서 is_nullable
로 나타 결정 론적이다.
편집 : 그것을 그러나 이러한 정의에 테이블을 작성하려고 특히이 경우 즉
[point] AS geography::Point(latitude, longitude, 4326) PERSISTED NOT NULL
PERSISTED
만큼 계산 열에 표시된 바와 같이 NOT NULL
를 지정 문법적으로 올바른이다 그러나 런타임 오류를 발생시킵니다. 열 유형, '지리'는 비 바이트 정렬 CLR 유형이기 때문에 테이블 '갑'의
계산 열 '점'은 유지할 수 없습니다.
오케이 좋아요. 계산식에 의해 선언 된 get 유형이 의미가 있습니다. 그리고 당신이 적절한 검사를 수행하지 않으면 null이 될 수 없다고 말할 수 있습니다. 완벽하게 이해합니다. 감사! – slandau
사실 CLR 데이터 유형의 경우 항상 Nullable이라고 가정 할 수 있습니다. 방금'ISNULL'에서 줄 바꿈을 시도했지만'sys.computed_columns'에'is_nullable'으로 표시됩니다. –