Saya memiliki tipe tabel yang ditentukan pengguna. Saya ingin memeriksa keberadaannya sebelum mengedit dalam tambalan menggunakan OBJECT_ID(name, type)
fungsi.
Apa type
dari enumerasi yang harus dilewati untuk tipe tabel yang ditentukan pengguna?
N'U'
seperti untuk tabel yang ditentukan pengguna tidak bekerja, yaitu IF OBJECT_ID(N'MyType', N'U') IS NOT NULL
sql
sql-server
sql-server-2008
tsql
user-defined-types
abatishchev
sumber
sumber
IF OBJECT_ID(N'MyType', 'TT') IS NULL
tanpa hasil, tetapi solusi Anda berhasil.SELECT name FROM sys.objects WHERE type = 'TT'
sys.types ... mereka bukan objek yang memiliki skema, jadi tidak akan ada di sys.objects
Pembaruan, Mar 2013
Anda dapat menggunakan TYPE_ID juga
sumber
Schema_ID
sebenarnya adalah salah satu atribut dalam tabel sys.types yang Anda tautkan ; inilah mengapa mereka dapat dirujuk sebagai [dbo]. [MyUDType] ). Namun demikian, Anda benar bahwa jenis UD tidak terdaftar di sys.objects, dan karenanya tidak dapat diakses oleh OBJECT_ID (). (Untuk alasan apa pun, sys.objects bukan merupakan daftar lengkap dari objek dengansys.objects
secara langsung tetapi ada baris di sana untuk masing-masingsumber
Contoh berikut berfungsi untuk saya, harap perhatikan "is_user_defined" NOT "is_table_type"
sumber
Anda juga dapat menggunakan tampilan table_types sistem
sumber