powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Изменение ограничения на столбец
5 сообщений из 5, страница 1 из 1
Изменение ограничения на столбец
    #40068703
Strength Class
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Возникла следующая проблема, в связи с изменением требования пользователя.

Раньше в БД в некоторые поля всегда вносились данные (NOT NULL). От этих полей зависят другие, вычислимые поля.
Теперь нужно, чтобы поля в некоторых случаях были пустыми и в этом случае зависимые поля принимали значения NULL.
При изменении описания столбца, чтобы принимал NULL выдается ошибка, что на него есть ссылка вычислимых полей:
Код: sql
1.
2.
3.
4.
Msg 5074, Level 16, State 1, Line 4
The column 'dblSigmaB' is dependent on column 'dblDiam0'.
Msg 4922, Level 16, State 9, Line 4
ALTER TABLE ALTER COLUMN dblDiam0 failed because one or more objects access this column.



Что необходимо исправить, чтобы этой ошибки не было и процедура могла бы вызываться на NULL-значениях.

Изменение столбца:
Код: sql
1.
ALTER TABLE LabData ALTER COLUMN dblDiam0 real NULL


Описание столбца с хранимой процедурой:
Код: sql
1.
Computed Column Specification: ([dbo].[SigmaB]([nPb], [dblDiam0]))


Сама процедура:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
USE [st]
GO
/****** Object:  UserDefinedFunction [dbo].[SigmaB]    Script Date: 06.05.2021 9:30:40 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER FUNCTION [dbo].[SigmaB] (@nPb int, @dblDiam0 real)  
RETURNS real AS  
BEGIN 
DECLARE @dblS0 real
DECLARE @dblS real

IF (@dblDiam0 <> 0)
BEGIN
	SET @dblS0 = round(3.14 * @dblDiam0 * @dblDiam0 / 4.0,2);
	SET @dblS = convert(real,round(convert(real,(convert(real,@nPb) / @dblS0)),1))
END
ELSE
	SET @dblSigmaB = NULL

RETURN @dblSigmaB
END
...
Рейтинг: 0 / 0
Изменение ограничения на столбец
    #40068707
Тяп-ляп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удалить вычисляемый столбец, изменить столбец, создать вычисляемый заново
...
Рейтинг: 0 / 0
Изменение ограничения на столбец
    #40068844
Strength Class
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тяп-ляп, спасибо. Получилось.
Без удаления никак не получится? Очень что-то удалять из БД неприятно.
...
Рейтинг: 0 / 0
Изменение ограничения на столбец
    #40068852
Тяп-ляп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие-то вариации на ту же тему:
изменить вычисляемый так, чтобы он не содержал обычный столбец
изменить обычный столбец
изменить вычисляемый
...
Рейтинг: 0 / 0
Изменение ограничения на столбец
    #40068912
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Strength Class,

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


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