Question

Je suis vérifiais MySQL Documentation pour ALTER TABLE et il ne semble pas inclure un moyen d'ajouter ou de modifier un commentaire à une colonne. Comment puis-je faire?

-- for table
ALTER TABLE myTable COMMENT 'Hello World'

-- for columns
-- ???
Était-ce utile?

La solution

essayer:

 ALTER TABLE `user` CHANGE `id` `id` INT( 11 ) COMMENT 'id of user'  

Autres conseils

Vous pouvez utiliser MODIFY COLUMN pour le faire. Il suffit de faire ...

ALTER TABLE YourTable
MODIFY COLUMN your_column
your_previous_column_definition COMMENT "Your new comment"

substitution:

  • YourTable avec le nom de votre table
  • your_column avec le nom de votre commentaire
  • your_previous_column_definition avec la colonne de définition_colonne , que je recommande d'obtenir via une commande SHOW CREATE TABLE YourTable et la copie mot à mot pour éviter les pièges. *
  • Your new comment avec le commentaire de la colonne que vous voulez.

Par exemple ...

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)

* Lorsque vous utilisez des clauses de MODIFY ou CHANGE dans une déclaration ALTER TABLE, je vous suggère de copier la définition de la colonne de la sortie d'une déclaration de SHOW CREATE TABLE. Cela vous protège de perdre accidentellement une partie importante de la définition de votre colonne en ne réalisant pas que vous devez inclure dans votre MODIFY ou clause CHANGE. Par exemple, si vous MODIFY une colonne AUTO_INCREMENT, vous devez spécifier explicitement à nouveau le modificateur de AUTO_INCREMENT dans la clause MODIFY ou la colonne cesserez d'être une colonne de AUTO_INCREMENT. De même, si la colonne est définie comme NOT NULL ou a une valeur DEFAULT, ces détails doivent être inclus lorsque vous faites un MODIFY ou CHANGE sur la colonne ou ils seront perdus.

Script pour tous les champs de la base de données:

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
  1. Exporter tout dans un fichier CSV
  2. Ouvrez votre éditeur de csv favori

Remarque: Vous pouvez améliorer à une seule table si vous préférez

La solution donnée par @Rufinus est grande, mais si vous avez incrémente automatiquement il briser.

La réponse du Rufin est approprié. Je préférerais utiliser ACTUALISATION au lieu de changer si vous utilisez ne pas besoin de changer le nom de la colonne.

Je ne suis pas d'accord avec le commentaire Marcus Pope. Le schéma de base de données MySQL de l'information ou tout lieu où réside le schéma d'information et qui contient la définition des données de toute base de données ne sont pas l'endroit pour traiter ces choses. Le schéma d'information est utilisée par le SGDB pour enregistrer les changements requis par toute commande DDL qui a été exécutée contre la base de données. Pourquoi nous aurions besoin des commandes DDL?

Il existe deux types de commandes SQL à utiliser dans une base de données relationnelle: DML et DDL. Lorsque vous ajoutez un commentaire, vous devez changer la structure de la table.

De MySQL 5.6 Documentation:

"INFORMATION_SCHEMA est une base de données dans chaque instance de MySQL, l'endroit qui stocke des informations sur toutes les autres bases de données que le serveur MySQL gère. La base de données INFORMATION_SCHEMA contient plusieurs tables en lecture seule. Ils sont en fait des vues, pas les tables de base, donc il aucun fichier qui leur sont associés, et vous ne pouvez pas définir des déclencheurs sur eux. en outre, il n'y a pas de répertoire de base de données avec ce nom.

Bien que vous pouvez sélectionner INFORMATION_SCHEMA comme base de données par défaut avec une instruction USE, vous ne pouvez lire le contenu des tables, pas effectuer des opérations INSERT, UPDATE ou DELETE sur eux. "

tableaux Chapitre 21 INFORMATION_SCHEMA

Selon la documentation, vous pouvez ajouter des commentaires uniquement au moment de la création de la table. Il est donc indispensable d'avoir la définition de la table. Une façon d'automatiser à l'aide du script pour lire la définition et mettre à jour vos commentaires.

Référence:

http://cornempire.net/2010/04 / 15 / add-commentaires-colonne-à-mysql /

http://bugs.mysql.com/bug.php?id=64439

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top