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

Откуда:
Сообщений: 2231
Собственно вопрос в возможности создания ограничения для временной таблицы ссылающегося на существующую UDF в Бд MyDB.

Вот так, ограничение и табличка создаются:

use tempdb 
go

create FUNCTION dbo.Check_ ()
RETURNS int
AS
BEGIN
RETURN 0
END

go 

create table #t (f1 int, check (dbo.Check_() = 0))

go

drop table #t
go

drop function dbo.Check_  


а вот так ошибка

use MyDB 
go

create FUNCTION dbo.Check_ ()
RETURNS int
AS
BEGIN
RETURN 0
END

go 

create table #t (f1 int, check (dbo.Check_() = 0))

go

drop table #t
go

drop function dbo.Check_  
6 май 13, 11:35    [14261819]     Ответить | Цитировать Сообщить модератору
 Re: Check UDF для временной таблички  [new]
Glory
Member

Откуда:
Сообщений: 104760
PaulWist
а вот так ошибка

Вы разве не знаете, что временные таблицы храняться в tempdb ?
6 май 13, 11:44    [14261859]     Ответить | Цитировать Сообщить модератору
 Re: Check UDF для временной таблички  [new]
PaulWist
Member

Откуда:
Сообщений: 2231
Glory
PaulWist
а вот так ошибка

Вы разве не знаете, что временные таблицы храняться в tempdb ?


Знаю.

Вопрос в том, как сослаться из временной таблички на UDF хранящуюся в другой БД, те есть ли такая возможность или нет, а лучше "ткните" в раздел БОЛа, в хелпе явного запрета не нашел.
6 май 13, 11:50    [14261893]     Ответить | Цитировать Сообщить модератору
 Re: Check UDF для временной таблички  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
PaulWist,

Явно такой возможности нет. Неявно - можно в tempdb создать функцию-обертку.
Только непонятно какова цель всех этих приседаний?
6 май 13, 12:07    [14261991]     Ответить | Цитировать Сообщить модератору
 Re: Check UDF для временной таблички  [new]
Glory
Member

Откуда:
Сообщений: 104760
PaulWist
Вопрос в том, как сослаться из временной таблички на UDF хранящуюся в другой БД, те есть ли такая возможность или нет, а лучше "ткните" в раздел БОЛа, в хелпе явного запрета не нашел.

Так же, как на все другие объекты в другой базе - с помощью имени базы

select MyDB.dbo.Check_()

Вот только ссылаться вообще и ссылаться в check constraint - это разные вещи
6 май 13, 12:11    [14262029]     Ответить | Цитировать Сообщить модератору
 Re: Check UDF для временной таблички  [new]
PaulWist
Member

Откуда:
Сообщений: 2231
invm
PaulWist,

Только непонятно какова цель всех этих приседаний?


Хотелось при заполнении временных таблиц использовать уже существующие udf.
6 май 13, 17:40    [14264267]     Ответить | Цитировать Сообщить модератору
 Re: Check UDF для временной таблички  [new]
PaulWist
Member

Откуда:
Сообщений: 2231
Glory
PaulWist
Вопрос в том, как сослаться из временной таблички на UDF хранящуюся в другой БД, те есть ли такая возможность или нет, а лучше "ткните" в раздел БОЛа, в хелпе явного запрета не нашел.

Так же, как на все другие объекты в другой базе - с помощью имени базы

select MyDB.dbo.Check_()

Вот только ссылаться вообще и ссылаться в check constraint - это разные вещи


Спасибо за напоминание.

Если Вы обратили внимание, то в заголовке темы и в первом посте специально выделено "Check UDF".
6 май 13, 17:43    [14264282]     Ответить | Цитировать Сообщить модератору
 Re: Check UDF для временной таблички  [new]
Glory
Member

Откуда:
Сообщений: 104760
PaulWist
Если Вы обратили внимание, то в заголовке темы и в первом посте специально выделено "Check UDF".

Ну так если бы вы при декларации вашего Check-а поставили полное имя объекта, то увидели бы четкое сообщение сервера

Msg 4120, Level 16, State 1, Line 1
A user-defined function name cannot be prefixed with a database name in this context.
7 май 13, 09:30    [14265642]     Ответить | Цитировать Сообщить модератору
 Re: Check UDF для временной таблички  [new]
PaulWist
Member

Откуда:
Сообщений: 2231
Glory
PaulWist
Если Вы обратили внимание, то в заголовке темы и в первом посте специально выделено "Check UDF".

Ну так если бы вы при декларации вашего Check-а поставили полное имя объекта, то увидели бы четкое сообщение сервера

Msg 4120, Level 16, State 1, Line 1
A user-defined function name cannot be prefixed with a database name in this context.


2Glory

Обижаете :), конечно попробовал.

И когда после чтения БОЛа, собственных попыток ничего не получилось - запостил на форуме тему.

PS думаю тема уже исчерпана, спс за комменты.
7 май 13, 09:39    [14265686]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить