Tenho verificado a documentação do MySQL para ALTER TABLE e não parece incluir uma forma de adicionar ou modificar um comentário a uma coluna. Como posso fazer isso?
-- for table
ALTER TABLE myTable COMMENT 'Hello World'
-- for columns
-- ???
Tenho verificado a documentação do MySQL para ALTER TABLE e não parece incluir uma forma de adicionar ou modificar um comentário a uma coluna. Como posso fazer isso?
-- for table
ALTER TABLE myTable COMMENT 'Hello World'
-- for columns
-- ???
Respostas:
experimentar:
ALTER TABLE `user` CHANGE `id` `id` INT( 11 ) COMMENT 'id of user'
Você pode usar MODIFY COLUMN
para fazer isso. Apenas faça...
ALTER TABLE YourTable
MODIFY COLUMN your_column
your_previous_column_definition COMMENT "Your new comment"
substituindo:
YourTable
com o nome da sua mesayour_column
com o nome do seu comentárioyour_previous_column_definition
com a definição_de_coluna da coluna , que recomendo obter por meio de um SHOW CREATE TABLE YourTable
comando e copiá-la na íntegra para evitar armadilhas. *Your new comment
com o comentário da coluna que você deseja.Por exemplo...
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)
* Sempre que você usar MODIFY
ou CHANGE
cláusulas em uma ALTER TABLE
instrução, sugiro que você copie a definição da coluna da saída de uma SHOW CREATE TABLE
instrução. Isso o protege de perder acidentalmente uma parte importante da definição da coluna por não perceber que precisa incluí-la em sua cláusula MODIFY
ou CHANGE
. Por exemplo, se você usar MODIFY
uma AUTO_INCREMENT
coluna, precisará especificar explicitamente o AUTO_INCREMENT
modificador novamente na MODIFY
cláusula, ou a coluna deixará de ser uma AUTO_INCREMENT
coluna. Da mesma forma, se a coluna for definida como NOT NULL
ou tiver um DEFAULT
valor, esses detalhes precisam ser incluídos ao fazer um MODIFY
ou CHANGE
na coluna ou eles serão perdidos.
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
Nota: Você pode melhorar para apenas uma mesa, se preferir
A solução dada por @Rufinus é ótima, mas se você tiver incrementos automáticos, ele irá quebrá-la.
dump.aux_comment,
precisa ter column_comment,
. Você se importaria de verificar se isso é verdade?
ALTER TABLE MODIFY id INT NOT NULL AUTO_INCREMENT COMMENT 'id of user';
. Isso não quebra os incrementos automáticos.
O esquema de informações não é o lugar para tratar essas coisas (consulte comandos do banco de dados DDL).
Ao adicionar um comentário, você precisa alterar a estrutura da tabela (comentários da tabela).
Da documentação do MySQL 5.6:
INFORMAÇÕES_SCHEMA é um banco de dados dentro de cada instância do MySQL, o local que armazena informações sobre todos os outros bancos de dados que o servidor MySQL mantém. O banco de dados INFORMATION_SCHEMA contém várias tabelas somente leitura. Eles são, na verdade, visualizações, não tabelas base, portanto, não há arquivos associados a eles e você não pode definir gatilhos neles. Além disso, não existe um diretório de banco de dados com esse nome.
Embora você possa selecionar INFORMATION_SCHEMA como o banco de dados padrão com uma instrução USE, você só pode ler o conteúdo das tabelas, não realizar operações INSERT, UPDATE ou DELETE nelas.
De acordo com a documentação, você pode adicionar comentários apenas no momento da criação da tabela. Portanto, é necessário ter uma definição de tabela. Uma maneira de automatizar usando o script para ler a definição e atualizar seus comentários.
Referência:
http://cornempire.net/2010/04/15/add-comments-to-column-mysql/