sql server - একটি টেবিলে একটি কলাম যোগ করুন, যদি এটি ইতিমধ্যে বিদ্যমান না থাকে




sql-server add (4)

/ * টেবিলে COLUMN EXISTENCE চেক করতে * /

 IF COL_LENGTH('TABLE_NAME','COLUMN_NAME') IS NULL
 BEGIN
 ALTER TABLE .... /*COLUMN DOES NOT EXIST OR CALLER DOES NOT HAVE PERMISSION TO VIEW THE OBJECT*/
 END

আমি এমএস এসকিউএল সার্ভারের জন্য একটি প্রশ্ন লিখতে চাই যা একটি টেবিলে একটি কলাম যুক্ত করে। কিন্তু আমি কোন ত্রুটি প্রদর্শন করতে চাই না, যখন আমি নিম্নলিখিত প্রশ্নের চালনা / চালনা করি।

আমি একটি টেবিল যোগ করার জন্য এই ধরণের প্রশ্নের ব্যবহার করছি ...

IF EXISTS (
       SELECT *
       FROM   sys.objects
       WHERE  OBJECT_ID = OBJECT_ID(N'[dbo].[Person]')
              AND TYPE IN (N'U')
   )

কিন্তু একটি কলামের জন্য এই প্রশ্নটি কীভাবে লিখতে হয় তা আমি জানি না।


আরেকটি বিকল্প। আমি এই পদ্ধতির পছন্দ করি কারণ এটি কম লেখা কিন্তু দুটি একই জিনিস সম্পাদন করে।

IF COLUMNPROPERTY(OBJECT_ID('dbo.Person'), 'ColumnName', 'ColumnId') IS NULL
BEGIN
    ALTER TABLE Person 
    ADD ColumnName VARCHAR(MAX) NOT NULL
END

আমি লক্ষ্য করেছি যে আপনার টেবিলের উপস্থিতি কোথায় আছে তা স্পষ্টতই ঠিক আছে

 if COLUMNPROPERTY( OBJECT_ID('dbo.Person'),'ColumnName','ColumnId') is not null

sys.columns table io sys.objects ব্যবহার করে আপনি একই গঠন ব্যবহার করতে পারেন।

IF NOT EXISTS (
  SELECT * 
  FROM   sys.columns 
  WHERE  object_id = OBJECT_ID(N'[dbo].[Person]') 
         AND name = 'ColumnName'
)

IF NOT EXISTS (SELECT 1  FROM SYS.COLUMNS WHERE  
OBJECT_ID = OBJECT_ID(N'[dbo].[Person]') AND name = 'DateOfBirth')
BEGIN
ALTER TABLE [dbo].[Person] ADD DateOfBirth DATETIME
END





not-exists