comment - mysql add column after
Alte la tabla de MySQL para agregar comentarios en las columnas (5)
Script para todos los campos en la base de datos:
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
- Exportar todo a un archivo CSV
- Ábrelo en tu editor de csv favorito
Nota: puede mejorar a una sola tabla si lo prefiere
La solución dada por @Rufinus es genial, pero si tienes incrementos automáticos, la romperá.
He estado revisando la documentación de MySQL para ALTER TABLE y no parece incluir una forma de agregar o modificar un comentario en una columna. ¿Cómo puedo hacer esto?
// for table
ALTER TABLE myTable COMMENT ''Hello World''
// for columns
// ???
La respuesta de Rufinus es apropiada. Preferiría usar MODIFY en lugar de usar CHANGE si no necesita cambiar el nombre de la columna.
No estoy de acuerdo con el comentario de Marcus Pope. El esquema de base de datos de información mysql o cualquier lugar donde resida el esquema de información y que contenga la definición de datos de cualquier base de datos no es el lugar adecuado para tratar estas cosas. El esquema de información es utilizado por el SGBD para registrar los cambios requeridos por cualquier comando DDL que se ejecutó contra la base de datos. ¿Por qué necesitaríamos los comandos DDL?
Hay dos tipos de comandos SQL para usar en cualquier base de datos relacional: DML y DDL. Cuando agrega un comentario, necesita cambiar la estructura de la tabla.
De la documentación de MySQL 5.6:
"INFORMATION_SCHEMA es una base de datos dentro de cada instancia MySQL, el lugar que almacena información sobre todas las otras bases de datos que mantiene el servidor MySQL. La base de datos INFORMATION_SCHEMA contiene varias tablas de solo lectura. En realidad, son vistas, no tablas base, por lo que no hay archivos asociado con ellos, y no puede establecer desencadenantes en ellos. Además, no hay un directorio de base de datos con ese nombre.
Aunque puede seleccionar INFORMATION_SCHEMA como la base de datos predeterminada con una declaración USE, solo puede leer el contenido de las tablas, no realizar operaciones INSERTAR, ACTUALIZAR o ELIMINAR en ellas ".
Puede usar MODIFY COLUMN
para hacer esto. Solo haz...
ALTER TABLE YourTable
MODIFY COLUMN your_column
your_previous_column_definition COMMENT "Your new comment"
Sustituyendo:
-
YourTable
con el nombre de tu mesa -
your_column
con el nombre de tu comentario -
your_previous_column_definition
conyour_previous_column_definition
de la columna, que recomiendo obtener a través de un comandoSHOW CREATE TABLE YourTable
y copiar textualmente para evitar trampas. * -
Your new comment
con elYour new comment
de la columna que quieras.
Por ejemplo...
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)
* Siempre que use cláusulas MODIFY
o CHANGE
en una instrucción ALTER TABLE
, le sugiero que copie la definición de la columna de la salida de una instrucción SHOW CREATE TABLE
. Esto lo protege de perder accidentalmente una parte importante de la definición de columna al no darse cuenta de que debe incluirlo en su cláusula MODIFY
o CHANGE
. Por ejemplo, si MODIFY
una columna AUTO_INCREMENT
, necesita especificar explícitamente el modificador AUTO_INCREMENT
en la cláusula MODIFY
, o la columna dejará de ser una columna AUTO_INCREMENT
. Del mismo modo, si la columna se define como NOT NULL
o tiene un valor DEFAULT
, estos detalles deben incluirse al hacer un MODIFY
o CHANGE
en la columna o se perderán.
Según la documentación, puede agregar comentarios solo al momento de crear la tabla. Entonces es imprescindible tener una definición de tabla. Una forma de automatizarlo usando el script para leer la definición y actualizar tus comentarios.
Referencia:
http://cornempire.net/2010/04/15/add-comments-to-column-mysql/
tratar:
ALTER TABLE `user` CHANGE `id` `id` INT( 11 ) COMMENT ''id of user''