He estado revisando la documentación de MySQL para ALTER TABLE y no parece incluir una forma de agregar o modificar un comentario a una columna. ¿Cómo puedo hacer esto?
-- for table
ALTER TABLE myTable COMMENT 'Hello World'
-- for columns
-- ???
He estado revisando la documentación de MySQL para ALTER TABLE y no parece incluir una forma de agregar o modificar un comentario a una columna. ¿Cómo puedo hacer esto?
-- for table
ALTER TABLE myTable COMMENT 'Hello World'
-- for columns
-- ???
Respuestas:
tratar:
ALTER TABLE `user` CHANGE `id` `id` INT( 11 ) COMMENT 'id of user'
Puede utilizar 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 mesayour_column
con el nombre de tu comentarioyour_previous_column_definition
con la column_definition de la columna , que recomiendo obtener a través de un SHOW CREATE TABLE YourTable
comando y copiar palabra por palabra para evitar trampas. *Your new comment
con el comentario de la columna que desee.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 MODIFY
o CHANGE
cláusulas en una ALTER TABLE
declaración, le sugiero que copie la definición de columna de la salida de una SHOW CREATE TABLE
declaración. Esto lo protege de perder accidentalmente una parte importante de la definición de su columna al no darse cuenta de que debe incluirla en su cláusula MODIFY
o CHANGE
. Por ejemplo, si tiene MODIFY
una AUTO_INCREMENT
columna, debe especificar explícitamente el AUTO_INCREMENT
modificador nuevamente en la MODIFY
cláusula, o la columna dejará de ser una AUTO_INCREMENT
columna. De manera similar, si la columna se define como NOT NULL
o tiene un DEFAULT
valor, estos detalles deben incluirse al hacer una MODIFY
o CHANGE
en la columna o se perderán.
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
Nota: puede mejorar a una sola mesa si lo prefiere
La solución dada por @Rufinus es excelente, pero si tiene incrementos automáticos, la romperá.
dump.aux_comment,
debe tenerlo column_comment,
. ¿Le importaría comprobar si es verdad?
ALTER TABLE MODIFY id INT NOT NULL AUTO_INCREMENT COMMENT 'id of user';
. Esto no rompe los incrementos automáticos.
El esquema de información no es el lugar para tratar estas cosas (consulte los comandos de la base de datos DDL).
Cuando agrega un comentario, debe cambiar la estructura de la tabla (comentarios de la tabla).
De la documentación de MySQL 5.6:
INFORMATION_SCHEMA es una base de datos dentro de cada instancia de MySQL, el lugar que almacena información sobre todas las demás 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 asociados con ellas y no puede establecer activadores en ellas. Además, no existe un directorio de base de datos con ese nombre.
Aunque puede seleccionar INFORMATION_SCHEMA como la base de datos predeterminada con una instrucción USE, solo puede leer el contenido de las tablas, no realizar operaciones INSERT, UPDATE o DELETE en ellas.
Según la documentación, puede agregar comentarios solo al momento de crear la tabla. Por lo tanto, es necesario tener una definición de tabla. Una forma de automatizarlo usando el script para leer la definición y actualizar sus comentarios.
Referencia:
http://cornempire.net/2010/04/15/add-comments-to-column-mysql/