Frage

Ich habe die Überprüfung der MySQL-Dokumentation für ALTER TABLE und es scheint nicht, einen Weg umfassen einen Kommentar zu einer Spalte hinzufügen oder zu ändern. Wie kann ich das tun?

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

-- for columns
-- ???
War es hilfreich?

Lösung

versuchen:

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

Andere Tipps

Sie können mit MODIFY COLUMN dies zu tun. Just do ...

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

ersetzt:

  • YourTable mit dem Namen der Tabelle
  • your_column mit dem Namen Ihres Kommentars
  • your_previous_column_definition mit der Spalte ist column_definition , die ich empfehlen, über einen SHOW CREATE TABLE YourTable Befehl bekommen und Kopieren wörtlich alle Fallen zu vermeiden. *
  • Your new comment mit der Spalte Kommentar Sie wollen.

Zum Beispiel ...

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)

* Wenn Sie MODIFY oder CHANGE Klauseln in einer ALTER TABLE Anweisung verwenden, empfehle ich Ihnen die Spaltendefinition aus der Ausgabe einer SHOW CREATE TABLE Anweisung kopieren. Dies schützt Sie versehentlich einen wichtigen Teil Ihrer Spaltendefinition zu verlieren, indem nicht zu merken, dass Sie es in Ihrem MODIFY oder CHANGE Klausel enthalten müssen. wenn Sie eine MODIFY Spalte Zum Beispiel AUTO_INCREMENT, müssen Sie explizit den AUTO_INCREMENT Modifikator wieder in der MODIFY Klausel angeben, oder die Spalte wird aufhören, eine AUTO_INCREMENT Spalte zu sein. In ähnlicher Weise, wenn die Spalte als NOT NULL definiert ist oder einen DEFAULT Wert hat, müssen diese Angaben aufgenommen werden, wenn ein MODIFY oder CHANGE auf der Säule zu tun oder sie verloren.

Script für alle Felder auf der Datenbank:

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. Exportieren Sie alle in eine CSV
  2. Öffnen Sie auf Ihre Lieblings-csv-Editor

Hinweis: Sie nur auf eine Tabelle verbessern können, wenn Sie es vorziehen,

Die Lösung von @Rufinus gegeben ist groß, aber wenn Sie die automatischen Schritte haben sie es brechen.

Die Antwort der Rufin angemessen ist. Ich würde es vorziehen, MODIFY statt auf Nutzungsänderung zu verwenden, wenn Sie den Namen der Spalte nicht ändern müssen.

Ich bin nicht mit dem Marcus Papst Kommentar zustimmen. Das MySQL-Informations-Datenbank-Schema oder ein Ort, an dem die Informationen Schema befindet und dass die Datendefinition jeder Datenbank enthält, ist nicht der Ort, um diese Dinge zu behandeln. Das Informationsschema wird durch die SGBD verwendet, um die Änderungen durch einen DDL-Befehl erforderlich aufnehmen, die gegen Datenbank ausgeführt wurden. Warum sollten wir die DDL-Befehle müssen?

Es gibt zwei Arten von SQL-Befehle Verwendung in beliebigen relationalen Datenbank: DML und DDL. Wenn Sie einen Kommentar hinzufügen, müssen Sie die Tabellenstruktur ändern.

Von MySQL 5.6 Dokumentation:

"INFORMATION_SCHEMA ist eine Datenbank, in jeder MySQL-Instanz, der Ort, dass speichert Informationen über alle anderen Datenbanken, dass der MySQL-Server verwaltet. Die Datenbank INFORMATION_SCHEMA mehrere Nur-Lese-Tabellen enthält. Sie sind Ansichten eigentlich nicht Basistabellen, so gibt sind keine Dateien mit ihnen verbunden ist, und Sie Trigger nicht auf sie einstellen können. auch gibt es kein Datenbankverzeichnis mit diesem Namen ist.

Auch wenn Sie INFORMATION_SCHEMA als Standarddatenbank mit einer USE-Anweisung auswählen, können Sie nur die Inhalte von Tabellen lesen, führt nicht INSERT, UPDATE oder DELETE-Operationen auf sie. "

Kapitel 21 INFORMATION_SCHEMA Tabellen

Gemäß der Dokumentation, die Sie nur Kommentare zum Zeitpunkt der Erstellung Tabelle hinzufügen können. So ist es muss Tabellendefinition haben. Eine Möglichkeit, zu automatisieren es das Skript mit der Definition zu lesen und Ihre Kommentare zu aktualisieren.

Referenz:

http://cornempire.net/2010/04 / 15 / Add-Kommentare-to-column-mysql /

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top