Sütunlara yorum eklemek için MySQL tablosunu değiştirin


Yanıtlar:


135

Deneyin:

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

12
İyi çalışıyor gibi görünüyor, ancak sütun tanımını dahil etmeden bunu yapmanın başka bir yolu var mı?
Jhonny D. Cano -Leftware-

15
Bu çözüm, otomatik artışları bozabilir.
workdreamer

13
Bir yorumu değiştirmenin tablonun tamamen yeniden yapılandırılmasına neden olacağını unutmayın. Bu yüzden çok büyük bir masada onsuz yaşamayı tercih edebilirsiniz.
Courtney Miles

2
@MarcusPope imkansız. Bkz. Dba.stackexchange.com/questions/78268/…
gaRex

5
@ user2045006 Sütun tanımı mevcut tanımla tam olarak eşleştiği sürece bu doğru değildir (veya artık değildir). Tablo yeniden yapılandırmasına neden olmadan açıklamalar eklenebilir.
Torben

36

Bunu MODIFY COLUMNyapmak için kullanabilirsiniz . Sadece yap...

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

ikame:

  • YourTable masanızın adıyla
  • your_column yorumunuzun adıyla
  • your_previous_column_definitionherhangi bir tuzaktanSHOW CREATE TABLE YourTable kaçınmak için bir komutla almanızı ve harfi harfine kopyalamanızı önerdiğim sütunun sütun tanımıyla . *
  • Your new comment istediğiniz sütun yorumu ile.

Örneğin...

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)

* Bir ifadede MODIFYveya CHANGEcümleleri kullandığınızda ALTER TABLE, sütun tanımını bir SHOW CREATE TABLEifadenin çıktısından kopyalamanızı öneririm . Bu, sütun tanımınızın önemli bir bölümünü yanlışlıkla MODIFYveya CHANGEcümlenize eklemeniz gerektiğini fark etmeyerek sizi yanlışlıkla kaybetmekten korur . Örneğin, MODIFYbir AUTO_INCREMENTsütunsanız, AUTO_INCREMENTdeğiştiriciyi tekrar MODIFYcümlede açıkça belirtmeniz gerekir , aksi takdirde sütun bir AUTO_INCREMENTsütun olmaktan çıkar. Sütun olarak tanımlanır Benzer şekilde, NOT NULLya da vardır DEFAULTdeğeri, bu ayrıntılar bir yaparken dahil edilmesi gerekir MODIFYveya CHANGEsütun üzerinde ya da kaybolur.


14

Veritabanındaki tüm alanlar için komut dosyası:

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
  1. Tümünü bir CSV'ye aktarın
  2. En sevdiğiniz csv düzenleyicide açın

Not: İsterseniz yalnızca bir tablo geliştirebilirsiniz

@Rufinus tarafından verilen çözüm harika, ancak otomatik artışlarınız varsa, onu bozacaktır.


3
Yorum yapacak yeterli temsilcisi olmayan yeni bir kullanıcıya göre, dump.aux_comment,olması gerekiyor column_comment,. Doğru olup olmadığını kontrol eder misin?
nhahtdh

Hata için üzgünüm.
workdreamer

Elbette, bir id auto_increment'iniz varsa, yapmanız gerekir ALTER TABLE MODIFY id INT NOT NULL AUTO_INCREMENT COMMENT 'id of user';. Bu, otomatik artışları bozmaz.
mpoletto

@workdreamer Otomatik artışı bozabileceğini söylediğiniz Rufinus çözümünden bahsediyordum. Hayır, verilen çözüm onu ​​bozmaz.
mpoletto

1
Muhteşem harika!
Rizki Noor Hidayet Wijaya

4

Bilgi şeması, bunları tedavi edecek yer değildir (DDL veritabanı komutlarına bakın).

Bir yorum eklediğinizde, tablo yapısını (tablo yorumları) değiştirmeniz gerekir.

MySQL 5.6 belgelerinden:

INFORMATION_SCHEMA, MySQL sunucusunun koruduğu tüm diğer veritabanları hakkındaki bilgileri depolayan her MySQL örneğindeki bir veritabanıdır. INFORMATION_SCHEMA veritabanı, birkaç salt okunur tablo içerir. Bunlar aslında temel tablolar değil görünümlerdir, dolayısıyla onlarla ilişkilendirilmiş dosyalar yoktur ve bunlara tetikleyici ayarlayamazsınız. Ayrıca, bu isimde bir veritabanı dizini de yoktur.

Bir USE deyimiyle varsayılan veritabanı olarak INFORMATION_SCHEMA'yı seçebilmenize rağmen, yalnızca tabloların içeriğini okuyabilir, bunlarda INSERT, UPDATE veya DELETE işlemlerini gerçekleştiremezsiniz.

Bölüm 21 INFORMATION_SCHEMA Tabloları


-3

Belgelere göre, yalnızca tablo oluştururken yorum ekleyebilirsiniz. Bu yüzden tablo tanımına sahip olmak gerekir. Tanımlamayı okumak ve yorumlarınızı güncellemek için komut dosyasını kullanarak otomatikleştirmenin bir yolu.

Referans:

http://cornempire.net/2010/04/15/add-comments-to-column-mysql/

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


2
Bu yanıt yanlıştır (sıkıcı olsa bile tablo oluşturulduktan sonra yorumları güncellemek mümkündür) ve yalnızca diğer web sitelerine bağlanır, bu nedenle Yığın Taşması yanıtı açısından yararlı değildir.
Lukas Eder
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.