আমি আমার টেবিলের অস্তিত্ব না থাকলে কেবল একটি কলাম তৈরি করার চেষ্টা করছি। আমি অনেক গবেষণা করেছি কিন্তু এখনও কোন সমাধান পাইনি।
শর্তসাপেক্ষে কলাম তৈরি করা কি এটি সম্ভব?
আমি আমার টেবিলের অস্তিত্ব না থাকলে কেবল একটি কলাম তৈরি করার চেষ্টা করছি। আমি অনেক গবেষণা করেছি কিন্তু এখনও কোন সমাধান পাইনি।
শর্তসাপেক্ষে কলাম তৈরি করা কি এটি সম্ভব?
উত্তর:
মাইএসকিউএল ALTER TABLE
নেই IF EXISTS
নির্দিষ্টকরণ।
আপনি যদি নিয়মিতভাবে যা করতে হবে এমন কিছু হয় তবে আপনি কোনও সঞ্চিত প্রোক বা প্রোগ্রামিং ভাষা ব্যবহার করে নিম্নলিখিতগুলি করতে পারেন:
সুডোকোড:
নীচে এসকিউএল ব্যবহার করে কলামটি বিদ্যমান কিনা তা সন্ধান করুন:
column_name
থেকে নির্বাচন করুন INFORMATION_SCHEMA
। COLUMNS
যেখানে TABLE_SCHEMA
= [ডাটাবেসের নাম] এবং TABLE_NAME
= [সারণীর নাম];
যদি উপরের ক্যোয়ারী কোনও ফলাফল দেয় তবে এর অর্থ কলামটি বিদ্যমান, অন্যথায় আপনি এগিয়ে গিয়ে কলাম তৈরি করতে পারেন।
column_name
এটি বিদ্যমান নেই। আমি ক্যোয়ারীটিকে এখানে সংশোধন করেছি:SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='[Schema_name]' AND TABLE_NAME='[Table_name]' and column_name='[Column_name]';
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='[Schema_name]' AND TABLE_NAME='[Table_name]' AND column_name='[Column_name]'
প্রকৃতপক্ষে এখন মারিয়া ডিবি 10.219 এর জন্য বিদ্যমান
ALTER TABLE test ADD COLUMN IF NOT EXISTS column_a VARCHAR(255);
বোনাস, এটি মোডেফাইয়ের জন্যও কাজ করে
ALTER TABLE test MODIFY IF EXISTS column_a VARCHAR(255);
আপনি ইতিমধ্যে অন্য স্ট্যাকওভারফ্লো পোস্টে উল্লিখিত এই সমাধানটি ব্যবহার করতে পারেন: (রেফারেন্স: https://stackoverflow.com/a/31989541/ )
মাইএসকিউএল - একটি কলামটি উপস্থিত না থাকলে সংযোজন টেবিল:
SET @dbname = DATABASE();
SET @tablename = "tableName";
SET @columnname = "colName";
SET @preparedStatement = (SELECT IF(
(
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE
(table_name = @tablename)
AND (table_schema = @dbname)
AND (column_name = @columnname)
) > 0,
"SELECT 1",
CONCAT("ALTER TABLE ", @tablename, " ADD ", @columnname, " INT(11);")
));
PREPARE alterIfNotExists FROM @preparedStatement;
EXECUTE alterIfNotExists;
DEALLOCATE PREPARE alterIfNotExists;
এটি নীচে আমার জন্য কাজ করেছে:
SELECT count(*)
INTO @exist
FROM information_schema.columns
WHERE table_schema = 'mydatabase'
and COLUMN_NAME = 'mycolumn'
AND table_name = 'mytable' LIMIT 1;
set @query = IF(@exist <= 0, 'ALTER TABLE mydatabase.`mytable` ADD COLUMN `mycolumn` MEDIUMTEXT NULL',
'select \'Column Exists\' status');
prepare stmt from @query;
EXECUTE stmt;