У меня есть определенный пользователем тип таблицы. Я хочу проверить его существование перед редактированием в патче с помощью OBJECT_ID(name, type)
функции.
Что type
из перечисления следует передать для определяемых пользователем типов таблиц?
N'U'
как для определенной пользователем таблицы не работает, т.е. IF OBJECT_ID(N'MyType', N'U') IS NOT NULL
sql
sql-server
sql-server-2008
tsql
user-defined-types
abatishchev
источник
источник
IF OBJECT_ID(N'MyType', 'TT') IS NULL
без успеха, но ваше решение сработало.SELECT name FROM sys.objects WHERE type = 'TT'
sys.types ... они не являются объектами схемы, поэтому не будут в sys.objects
Обновление, март 2013
Вы можете использовать TYPE_ID слишком
источник
Schema_ID
фактически это один из атрибутов в таблице sys.types, с которой вы связаны; именно поэтому на них можно ссылаться как [dbo]. [MyUDType] ). Тем не менее, вы правы, что типы UD не перечислены в sys.objects и, следовательно, недоступны OBJECT_ID (). (По какой-то причине sys.objects не является исчерпывающим списком объектов в области схемы.)sys.objects
напрямую, но для каждого из них есть рядисточник
Следующие примеры работают для меня, пожалуйста, обратите внимание "is_user_defined" НЕ "is_table_type"
источник
Вы также можете использовать системное представление table_types
источник