मैं ALTER टेबल के लिए MySQL दस्तावेज़ीकरण की जाँच कर रहा हूँ और इसमें किसी कॉलम में टिप्पणी जोड़ने या संशोधित करने का तरीका शामिल नहीं लगता है। मैं यह कैसे कर सकता हूँ?
-- for table
ALTER TABLE myTable COMMENT 'Hello World'
-- for columns
-- ???
मैं ALTER टेबल के लिए MySQL दस्तावेज़ीकरण की जाँच कर रहा हूँ और इसमें किसी कॉलम में टिप्पणी जोड़ने या संशोधित करने का तरीका शामिल नहीं लगता है। मैं यह कैसे कर सकता हूँ?
-- for table
ALTER TABLE myTable COMMENT 'Hello World'
-- for columns
-- ???
जवाबों:
प्रयत्न:
ALTER TABLE `user` CHANGE `id` `id` INT( 11 ) COMMENT 'id of user'
आप ऐसा करने के 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
या वे खो जाएंगे।
SELECT
table_name,
column_name,
CONCAT('ALTER TABLE `',
TABLE_SCHEMA,
'`.`',
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 IN ('CURRENT_TIMESTAMP', 'CURRENT_TIMESTAMP()', 'NULL', 'b\'0\'', 'b\'1\''), 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
नोट: यदि आप चाहें तो आप केवल एक तालिका में सुधार कर सकते हैं
@ रुफिनस द्वारा दिया गया समाधान बहुत अच्छा है लेकिन अगर आपके पास ऑटो वेतन वृद्धि है तो इसे तोड़ देंगे।
dump.aux_comment,
होना चाहिए column_comment,
। क्या आप जाँचेंगे कि क्या यह सच है?
ALTER TABLE MODIFY id INT NOT NULL AUTO_INCREMENT COMMENT 'id of user';
। यह ऑटो वेतन वृद्धि को नहीं तोड़ता है।
सूचना स्कीमा इन चीजों का इलाज करने का स्थान नहीं है (देखें DDL डेटाबेस कमांड)।
जब आप एक टिप्पणी जोड़ते हैं तो आपको तालिका संरचना (तालिका टिप्पणियाँ) को बदलने की आवश्यकता होती है।
MySQL 5.6 प्रलेखन से:
INFORMATION_SCHEMA प्रत्येक MySQL उदाहरण के भीतर एक डेटाबेस है, वह स्थान जो अन्य सभी डेटाबेस के बारे में जानकारी संग्रहीत करता है जो MySQL सर्वर रखता है। INFORMATION_SCHEMA डेटाबेस में कई रीड-ओनली टेबल हैं। वे वास्तव में दृश्य हैं, बेस टेबल नहीं हैं, इसलिए उनके साथ कोई फ़ाइल जुड़ी नहीं है, और आप उन पर ट्रिगर सेट नहीं कर सकते। इसके अलावा, उस नाम के साथ कोई डेटाबेस निर्देशिका नहीं है।
हालाँकि आप INFORMATION_SCHEMA का उपयोग किसी डिफ़ॉल्ट कथन के रूप में कर सकते हैं, आप केवल तालिकाओं की सामग्री पढ़ सकते हैं, INSERT, UPDATE, या उन पर DELETE संचालन नहीं कर सकते।
प्रलेखन के अनुसार आप केवल सारणी बनाने के समय ही टिप्पणियाँ जोड़ सकते हैं। तो यह तालिका की परिभाषा होनी चाहिए। परिभाषा पढ़ने और अपनी टिप्पणियों को अपडेट करने के लिए स्क्रिप्ट का उपयोग करके इसे स्वचालित करने का एक तरीका।
संदर्भ:
http://cornempire.net/2010/04/15/add-comments-to-column-mysql/