Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как изменить функцию, которая в constraint  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
MSSQLServer 2000 SP4

создаю пустую функцию.
создаю таблицу , в которой есть constraint, в котором используется функция как дефолт значение.
пытаюсь сделать alter function и получаю:

Server: Msg 3729, Level 16, State 3, Procedure GetUserId, Line 19
Cannot ALTER 'dbo.UserId' because it is being referenced by object 'DF_vox_creator_id'.

удалить/создать такую функцию тоже нельзя


?
3 июл 06, 14:19    [2836809]     Ответить | Цитировать Сообщить модератору
 Re: как изменить функцию, которая в constraint  [new]
Glory
Member

Откуда:
Сообщений: 104760
удалить дефолт(ы) - изменить функцию - создать дефолт(ы)
3 июл 06, 14:27    [2836869]     Ответить | Цитировать Сообщить модератору
 Re: как изменить функцию, которая в constraint  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
как добавить дефолт для колонки?
так не работает

ALTER TABLE [dbo].[vox]
alter column [creator_id] [int] NULL DEFAULT 0
Go
3 июл 06, 14:58    [2837017]     Ответить | Цитировать Сообщить модератору
 Re: как изменить функцию, которая в constraint  [new]
pavel73
Member

Откуда:
Сообщений: 804
[int] - это что?
3 июл 06, 15:35    [2837261]     Ответить | Цитировать Сообщить модератору
 Re: как изменить функцию, которая в constraint  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
ALTER TABLE TableName ADD CONSTRAINT DF_TableName_ColumnName DEFAULT(0) FOR ColumnName
3 июл 06, 16:03    [2837448]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: как изменить функцию, которая в constraint  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54199
Glory
удалить дефолт(ы) - изменить функцию - создать дефолт(ы)
коллеги, добрый день
а что, за последние 13 лет ничего не поменялось?

А то ошибка так и валится
Cannot ALTER 'dbo.get_****' because it is being referenced by object 'DF__BAN__STAT___47DBAE45'

Чтобы поменять функцию в дефолтах, надо их всех отрубать, а потом включать?

Microsoft SQL Server 2017 (RTM-CU8) (KB4338363) - 14.0.3029.16 (X64) Jun 13 2018 13:35:56
Copyright (C) 2017 Microsoft Corporation Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2016
Datacenter 10.0 <X64> (Build 14393: ) (Hypervisor)
19 июн 19, 13:15    [21911478]     Ответить | Цитировать Сообщить модератору
 Re: как изменить функцию, которая в constraint  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31357
andreymx
а что, за последние 13 лет ничего не поменялось?

Чтобы поменять функцию в дефолтах, надо их всех отрубать, а потом включать?
Да.
19 июн 19, 13:26    [21911491]     Ответить | Цитировать Сообщить модератору
 Re: как изменить функцию, которая в constraint  [new]
aleks222
Member

Откуда:
Сообщений: 983
Если вам нравится менять шило на мыло, то как и десять лет назад канает:

1. Делаем основную функцию F(x).
2. Делаем "функцию для дефолта или констрейнта" create function FC(x) as return F(x);
3. Ставим FC(x) в определение дефолта или констрейнта.
4. Меняем F(x) как душеньке угодно...
19 июн 19, 13:28    [21911495]     Ответить | Цитировать Сообщить модератору
 Re: как изменить функцию, которая в constraint  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54199
И эти люди запрещают мне ковыряться в носу (с)
19 июн 19, 13:32    [21911504]     Ответить | Цитировать Сообщить модератору
 Re: как изменить функцию, которая в constraint  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54199
aleks222,

Спасибо, понял
19 июн 19, 13:36    [21911512]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить