Я перевіряв MySQL Документацію для ALTER TABLE і, схоже, не містить способу додавання або зміни коментаря до стовпця. Як я можу це зробити?
-- for table
ALTER TABLE myTable COMMENT 'Hello World'
-- for columns
-- ???
Я перевіряв MySQL Документацію для ALTER TABLE і, схоже, не містить способу додавання або зміни коментаря до стовпця. Як я можу це зробити?
-- 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зі стовпцем 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_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
Примітка: Ви можете вдосконалити лише одну таблицю, якщо хочете
Рішення, яке надає @Rufinus, є чудовим, але якщо у вас є автоматичний приріст, він порушить його.
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 як базу даних за замовчуванням з оператором USE, ви можете лише читати вміст таблиць, не виконувати операції INSERT, UPDATE або DELETE.
Відповідно до документації, ви можете додавати коментарі лише під час створення таблиці. Тому необхідно мати визначення таблиці. Один із способів автоматизувати його за допомогою скрипту, щоб прочитати визначення та оновити свої коментарі.
Довідка:
http://cornempire.net/2010/04/15/add-comments-to-column-mysql/