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 type
de 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 NULL
sin é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_ID
de 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.objects
directamente, 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