Я перевіряв 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/