ALTER TABLE için MySQL Dokümantasyonunu kontrol ediyorum ve bir sütuna yorum eklemek veya değiştirmek için bir yol içermiyor gibi görünüyor. Bunu nasıl yapabilirim?
-- for table
ALTER TABLE myTable COMMENT 'Hello World'
-- for columns
-- ???
ALTER TABLE için MySQL Dokümantasyonunu kontrol ediyorum ve bir sütuna yorum eklemek veya değiştirmek için bir yol içermiyor gibi görünüyor. Bunu nasıl yapabilirim?
-- for table
ALTER TABLE myTable COMMENT 'Hello World'
-- for columns
-- ???
Yanıtlar:
Deneyin:
ALTER TABLE `user` CHANGE `id` `id` INT( 11 ) COMMENT 'id of user'
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ıylayour_column yorumunuzun adıylayour_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.
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
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.
dump.aux_comment,olması gerekiyor column_comment,. Doğru olup olmadığını kontrol eder misin?
ALTER TABLE MODIFY id INT NOT NULL AUTO_INCREMENT COMMENT 'id of user';. Bu, otomatik artışları bozmaz.
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.
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/