w3schools কিভাবে SQL সার্ভার 2008 ব্যবহারকারী-সংজ্ঞায়িত টেবিল টাইপ অস্তিত্ব পরীক্ষা করতে?




w3schools sql (4)

IF EXISTS(SELECT 1 FROM sys.types WHERE name = 'Person' AND is_table_type = 1 AND SCHEMA_ID('VAB') = schema_id)
DROP TYPE VAB.Person;
go
CREATE TYPE VAB.Person AS TABLE
(    PersonID               INT
    ,FirstName              VARCHAR(255)
    ,MiddleName             VARCHAR(255)
    ,LastName               VARCHAR(255)
    ,PreferredName          VARCHAR(255)
);

আমি একটি ব্যবহারকারী সংজ্ঞায়িত টেবিল টাইপ আছে। আমি OBJECT_ID(name, type) ফাংশন ব্যবহার করে একটি প্যাচ সম্পাদনা করার আগে এটির অস্তিত্ব পরীক্ষা করতে চাই।

ব্যবহারকারীর সংজ্ঞায়িত টেবিল ধরনের জন্য enumeration থেকে কি type পাস করা উচিত?

N'U' ব্যবহারকারীর সংজ্ঞায়িত টেবিলের জন্য কাজ করে না, অর্থাৎ IF OBJECT_ID(N'MyType', N'U') IS NOT NULL


আপনি sys.types দেখতে বা TYPE_ID ব্যবহার করতে পারেন:

IF TYPE_ID(N'MyType') IS NULL ...

শুধু একটি সতর্কতা: type_id ব্যবহার করে টাইপ একটি টেবিল টাইপ যাচাই করা হবে না - যে নামের দ্বারা একটি টাইপ বিদ্যমান। অন্যথায় জিবিএন এর প্রশ্নের সম্ভবত ভাল।


আপনি সিস্টেম table_types ভিউ ব্যবহার করতে পারেন

IF EXISTS (SELECT *
           FROM   [sys].[table_types]
           WHERE  user_type_id = Type_id(N'[dbo].[UdTableType]'))
  BEGIN
      PRINT 'EXISTS'
  END 

IF EXISTS (SELECT * FROM sys.types WHERE is_table_type = 1 AND name = 'MyType')
    --stuff

sys.types ... তারা স্কিমা- sys.objects বস্তু নয় তাই sys.objects মধ্যে হবে না

আপডেট, মার্চ 2013

আপনি খুব TYPE_ID ব্যবহার করতে পারেন







user-defined-types