কলামগুলিতে মন্তব্য যুক্ত করতে মাইএসকিউএল টেবিলটি পরিবর্তন করুন


108

অলটার টেবিলে মাইএসকিউএল ডকুমেন্টেশন পরীক্ষা করে দেখছি এবং এটি কোনও কলামে কোনও মন্তব্য যুক্ত বা সংশোধন করার কোনও উপায় অন্তর্ভুক্ত বলে মনে হচ্ছে না। কিভাবে আমি এটি করতে পারব?

-- for table
ALTER TABLE myTable COMMENT 'Hello World'

-- for columns
-- ???

উত্তর:


134

চেষ্টা করে দেখুন:

 ALTER TABLE `user` CHANGE `id` `id` INT( 11 ) COMMENT 'id of user'  

12
এটি দুর্দান্ত কাজ করছে বলে মনে হচ্ছে, তবে কলাম সংজ্ঞাটি বাদ দিয়ে এটি করার কোনও অন্য উপায় আছে?
ঝনি ডি ক্যানো-লেফটওয়্যার-

15
এই সমাধানটি অটো ইনক্রিমেন্টগুলি ভেঙে ফেলতে পারে।
workdreamer

13
মনে রাখবেন যে কোনও মন্তব্য পরিবর্তন করা সারণীর সম্পূর্ণ পুনর্গঠনের কারণ ঘটবে। সুতরাং আপনি এটি খুব বড় টেবিলে ছাড়া বাঁচতে বেছে নিতে পারেন।
কোর্টনি মাইলস

2
@ মার্কাসপপ এটি অসম্ভব দেখুন dba.stackexchange.com/questions/78268/…
গেরেক্স

5
@ ব্যবহারকারী2045006 এটি ততক্ষণ (বা আর) সত্য নয়, যতক্ষণ না কলাম সংজ্ঞা বিদ্যমান সংজ্ঞাটির সাথে ঠিক মেলে। টেবিল পুনর্গঠন কারণ না করে মন্তব্য যুক্ত করা যেতে পারে।
টর্বেন

36

আপনি এটি করতে ব্যবহার করতে পারেন MODIFY COLUMN। শুধু কর...

ALTER TABLE YourTable
MODIFY COLUMN your_column
your_previous_column_definition COMMENT "Your new comment"

বদলে:

  • YourTable আপনার টেবিলের নাম সহ
  • your_column আপনার মন্তব্য নাম সহ
  • your_previous_column_definitionকলামটির কলাম_সংশোধনের সাথে , যা SHOW CREATE TABLE YourTableকোনও ফাঁদ এড়াতে কমান্ডের মাধ্যমে পাওয়ার এবং ভারব্যাটিম অনুলিপি করার পরামর্শ দিচ্ছি *
  • Your new comment আপনি চান কলাম মন্তব্য দিয়ে।

উদাহরণ স্বরূপ...

mysql> CREATE TABLE `Example` (
    ->   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    ->   `some_col` varchar(255) DEFAULT NULL,
    ->   PRIMARY KEY (`id`)
    -> );
Query OK, 0 rows affected (0.18 sec)

mysql> ALTER TABLE Example
    -> MODIFY COLUMN `id`
    -> int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Look, I''m a comment!';
Query OK, 0 rows affected (0.07 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> SHOW CREATE TABLE Example;
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                                                  |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Example | CREATE TABLE `Example` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Look, I''m a comment!',
  `some_col` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

* আপনি যখনই কোনও বিবৃতি ব্যবহার করেন MODIFYবা CHANGEক্লজ করেন ALTER TABLE, আমি আপনাকে পরামর্শ দিয়েছি যে আপনি কোনও SHOW CREATE TABLEস্টেটমেন্টের আউটপুট থেকে কলাম সংজ্ঞাটি অনুলিপি করবেন । এটি আপনাকে নিজের MODIFYবা CHANGEঅনুচ্ছেদে অন্তর্ভুক্ত করা দরকার তা বুঝতে না পেরে ঘটনাক্রমে আপনার কলাম সংজ্ঞাটির একটি গুরুত্বপূর্ণ অংশ হারাতে বাঁচায়। উদাহরণস্বরূপ, আপনি যদি MODIFYএকটি AUTO_INCREMENTকলাম করেন তবে আপনাকে স্পষ্টভাবে AUTO_INCREMENTআবার ধারাটিতে আবার সংশোধক নির্দিষ্ট করতে MODIFYহবে, বা কলামটি একটি AUTO_INCREMENTকলাম হতে থামবে । একইভাবে, যদি কলাম হিসাবে সংজ্ঞায়িত করা হয় NOT NULLবা হয়েছে DEFAULTমান, এই বিবরণ একটি করছেন অন্তর্ভুক্ত করা প্রয়োজন MODIFYবা CHANGEকলামে অথবা তারা হারিয়ে যাবে।


13

ডাটাবেসে সমস্ত ক্ষেত্রে স্ক্রিপ্ট:

SELECT 
table_name,
column_name,
CONCAT('ALTER TABLE `',
        table_name,
        '` CHANGE `',
        column_name,
        '` `',
        column_name,
        '` ',
        column_type,
        ' ',
        IF(is_nullable = 'YES', '' , 'NOT NULL '),
        IF(column_default IS NOT NULL, concat('DEFAULT ', IF(column_default = 'CURRENT_TIMESTAMP', column_default, CONCAT('\'',column_default,'\'') ), ' '), ''),
        IF(column_default IS NULL AND is_nullable = 'YES' AND column_key = '' AND column_type = 'timestamp','NULL ', ''),
        IF(column_default IS NULL AND is_nullable = 'YES' AND column_key = '','DEFAULT NULL ', ''),
        extra,
        ' COMMENT \'',
        column_comment,
        '\' ;') as script
FROM
    information_schema.columns
WHERE
    table_schema = 'my_database_name'
ORDER BY table_name , column_name
  1. সমস্ত একটি সিএসভিতে রফতানি করুন
  2. এটি আপনার প্রিয় সিএসভি সম্পাদকে খুলুন

দ্রষ্টব্য: আপনি যদি চান তবে কেবল একটি টেবিলের উন্নতি করতে পারেন

@ রুফিনাস প্রদত্ত সমাধানটি দুর্দান্ত তবে আপনার যদি স্বয়ংক্রিয় বৃদ্ধি হয় তবে তা এটি ভেঙে দেবে।


3
একটি নতুন ব্যবহারকারীর মতে মন্তব্য করার মতো যথেষ্ট প্রতিনিধি নেই, dump.aux_comment,এটি হওয়া দরকার column_comment,। এটা সত্য কিনা তা পরীক্ষা করতে আপনি কি আপত্তি করবেন?
nhahtdh

ভুলের জন্য দুঃখিত.
workdreamer

অবশ্যই আপনার যদি একটি আইডি অটো_স্রিমেন্ট থাকে তবে আপনার এটি করা দরকার ALTER TABLE MODIFY id INT NOT NULL AUTO_INCREMENT COMMENT 'id of user';। এটি স্বয়ংক্রিয় বৃদ্ধি ভাঙবে না।
এমপোলেটটো

@ ওয়ার্ক্রেমার আমি রুফিনাস সমাধানের বিষয়ে উল্লেখ করছি যে আপনি বলছেন এটি স্বয়ংক্রিয় বৃদ্ধি বৃদ্ধি করতে পারে। না, প্রদত্ত সমাধানটি এটি ভঙ্গ করে না।
এমপ্লেটো

1
আশ্চর্যজনক সন্ত্রস্ত!
রিজকি নূর হিদায়াত বিজয়

4

তথ্য স্কিমা এই জিনিসগুলি চিকিত্সা করার জায়গা নয় (ডিডিএল ডাটাবেস কমান্ড দেখুন)।

আপনি একটি মন্তব্য যুক্ত করার সময় আপনাকে সারণির কাঠামো পরিবর্তন করতে হবে (টেবিল মন্তব্য)।

মাইএসকিউএল 5.6 নথি থেকে:

INFORMATION_SCHEMA হ'ল প্রতিটি মাইএসকিউএল ইনস্ট্যান্সের মধ্যে একটি ডাটাবেস, সেই জায়গাটি যা মাইএসকিউএল সার্ভার রক্ষণ করে অন্যান্য সমস্ত ডাটাবেস সম্পর্কে তথ্য সঞ্চয় করে। INFORMATION_SCHEMA ডাটাবেসে বেশ কয়েকটি পঠনযোগ্য টেবিল রয়েছে। এগুলি প্রকৃতপক্ষে দেখা হয়, বেস টেবিল নয়, সুতরাং তাদের সাথে কোনও ফাইল যুক্ত নেই এবং আপনি সেগুলিতে ট্রিগার সেট করতে পারবেন না। এছাড়াও, সেই নাম সহ কোনও ডাটাবেস ডিরেক্টরি নেই।

আপনি যদি কোনও USE বিবৃতি দিয়ে INFORMATION_SCHEMA কে ডিফল্ট ডাটাবেস হিসাবে বেছে নিতে পারেন তবে আপনি কেবল সারণির বিষয়বস্তু পড়তে পারবেন, INSERT, আপডেট বা তাদের উপর অপারেশন মুছে ফেলতে পারবেন না।

অধ্যায় 21 INFORMATION_SCHEMA টেবিল


-3

ডকুমেন্টেশন অনুসারে আপনি কেবল সারণী তৈরির সময় মন্তব্য যুক্ত করতে পারেন। সুতরাং এটি টেবিল সংজ্ঞা থাকা আবশ্যক। সংজ্ঞাটি পড়তে এবং আপনার মন্তব্যগুলি আপডেট করার জন্য স্ক্রিপ্টটি ব্যবহার করে এটি স্বয়ংক্রিয় করার একটি উপায়।

রেফারেন্স:

http://cornempire.net/2010/04/15/add-comments-to-column-mysql/

http://bugs.mysql.com/bug.php?id=64439


2
এই উত্তরটি ভুল (টেবিল তৈরির পরে মন্তব্যটি আপডেট করা এমনকি ক্লান্তিকর হলেও এটি আপডেট করা সম্ভব) এবং এটি কেবল অন্য ওয়েবসাইটগুলির সাথে লিঙ্ক করে, সুতরাং এটি স্ট্যাক ওভারফ্লো উত্তরের ক্ষেত্রে কার্যকর নয়।
লুকাস এদার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.