powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не материализует вычисляемый столбец по причине его недетерминированости
7 сообщений из 7, страница 1 из 1
Не материализует вычисляемый столбец по причине его недетерминированости
    #39597689
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Пытаюсь создать следующею таблицу с расчётным столбцом, который должен быть материализован:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE Geographical_koordinates (
    Id_Geographical_koordinates int NOT NULL IDENTITY (1,1) PRIMARY KEY,
    Koordinate geography NOT NULL,
    SRID INT NULL,
    Radius_action INT,
    All_koordinates_area AS Koordinate.STBuffer(Radius_action) PERSISTED,
    Koordinate_text AS Koordinate.STAsText() PERSISTED,
    All_koordinates_area_txt AS dbo.AreaInText(Koordinate,Radius_action) PERSISTED,
    Heigh_sea_level int NULL,
    description nvarchar(50) NULL);
    GO


Функция:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE FUNCTION [dbo].[AreaInText] (@Koordinate geography, @Radius_action int)
 RETURNS nvarchar(max)
 AS
 BEGIN
 DECLARE @area geography;
 DECLARE @areaText nvarchar(max);
 SET @area=@Koordinate.STBuffer(@Radius_action);
 SET @areaText=@area.STAsText();
 RETURN(@areaText);
 END
GO



В 8-ой строке использую функцию, которая не обращается к внешним данным и использует только функции STAsText() и STBuffer(), которых не нашёл в списке детерминированных и не детерминированных. Но так как на 6 и 7 строку, где используются те же функции SQL не ругается и принимает их соответственно они должны быть детерминированы. Но почему-то выдаёт ошибку:
Код: sql
1.
2.
Сообщение 4936, уровень 16, состояние 1, строка 4
Невозможно материализовать вычисляемый столбец "All_koordinates_area_txt" в таблице "Geographical_koordinates", так как он является недетерминированным.



Почему же столбец всё равно получается недетерминированным?

Это можно как-то исправить?
...
Рейтинг: 0 / 0
Не материализует вычисляемый столбец по причине его недетерминированости
    #39597691
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,

ну для начала WITH SCHEMABINDING
...
Рейтинг: 0 / 0
Не материализует вычисляемый столбец по причине его недетерминированости
    #39597693
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKVlad__i__mir,

ну для начала WITH SCHEMABINDING

Можно по-подробнее, не понял что имеется в виду
...
Рейтинг: 0 / 0
Не материализует вычисляемый столбец по причине его недетерминированости
    #39597697
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,

Код: sql
1.
2.
3.
4.
5.
CREATE FUNCTION [dbo].[AreaInText] (@Koordinate geography, @Radius_action int)
 RETURNS nvarchar(max)
WITH SCHEMABINDING
AS
...
...
Рейтинг: 0 / 0
Не материализует вычисляемый столбец по причине его недетерминированости
    #39597699
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKVlad__i__mir,

Код: sql
1.
2.
3.
4.
5.
CREATE FUNCTION [dbo].[AreaInText] (@Koordinate geography, @Radius_action int)
 RETURNS nvarchar(max)
WITH SCHEMABINDING
AS
...



Спасибо! Я читал, что SCHEMABINDING используется для представлений, чтобы нельзя было изменить базовую таблицу таким способом, который может повлиять на определение представления. А здесь на что он накладывает ограничение?
...
Рейтинг: 0 / 0
Не материализует вычисляемый столбец по причине его недетерминированости
    #39597723
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mirTaPaKVlad__i__mir,

Код: sql
1.
2.
3.
4.
5.
CREATE FUNCTION [dbo].[AreaInText] (@Koordinate geography, @Radius_action int)
 RETURNS nvarchar(max)
WITH SCHEMABINDING
AS
...




Спасибо! Я читал, что SCHEMABINDING используется для представлений, чтобы нельзя было изменить базовую таблицу таким способом, который может повлиять на определение представления. А здесь на что он накладывает ограничение?
что вы не поменяете функцию, не удалив ее предварительно из default-а
...
Рейтинг: 0 / 0
Не материализует вычисляемый столбец по причине его недетерминированости
    #39597751
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLexVlad__i__mirпропущено...


Спасибо! Я читал, что SCHEMABINDING используется для представлений, чтобы нельзя было изменить базовую таблицу таким способом, который может повлиять на определение представления. А здесь на что он накладывает ограничение?
что вы не поменяете функцию, не удалив ее предварительно из default-а

Спасибо! А что такое default?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не материализует вычисляемый столбец по причине его недетерминированости
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]