Tengo un tipo de tabla definida por el usuario. Quiero verificar su existencia antes de editar en un parche usando la OBJECT_ID(name, type)función.
¿Qué se debe pasar typede la enumeración para los tipos de tabla definidos por el usuario?
N'U' como para la tabla definida por el usuario no funciona, es decir IF OBJECT_ID(N'MyType', N'U') IS NOT NULL
sql
sql-server
sql-server-2008
tsql
user-defined-types
abatishchev
fuente
fuente

IF OBJECT_ID(N'MyType', 'TT') IS NULLsin éxito, pero su solución funcionó.SELECT name FROM sys.objects WHERE type = 'TT'sys.types ... no son objetos de ámbito de esquema, por lo que no estarán en sys.objects
Actualización, mar 2013
Puede utilizar TYPE_ID demasiado
fuente
Schema_IDde hecho, es uno de los atributos en la tabla sys.types a la que se vinculó; es por eso que se puede hacer referencia a ellos como [dbo]. [MyUDType] ) Sin embargo, tiene razón en que los tipos de UD no se enumeran en sys.objects y, por lo tanto, OBJECT_ID () no puede acceder a ellos. (Por alguna razón, sys.objects no es una lista exhaustiva de objetos con alcance de esquema.)sys.objectsdirectamente, pero hay una fila allí para cada uno de ellosfuente
Los siguientes ejemplos me funcionan, tenga en cuenta que "is_user_defined" NOT "is_table_type"
fuente
También puede usar la vista system table_types
fuente