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 COLUMN
yapmak 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_definition
herhangi 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 MODIFY
veya CHANGE
cümleleri kullandığınızda ALTER TABLE
, sütun tanımını bir SHOW CREATE TABLE
ifadenin çıktısından kopyalamanızı öneririm . Bu, sütun tanımınızın önemli bir bölümünü yanlışlıkla MODIFY
veya CHANGE
cümlenize eklemeniz gerektiğini fark etmeyerek sizi yanlışlıkla kaybetmekten korur . Örneğin, MODIFY
bir AUTO_INCREMENT
sütunsanız, AUTO_INCREMENT
değiştiriciyi tekrar MODIFY
cümlede açıkça belirtmeniz gerekir , aksi takdirde sütun bir AUTO_INCREMENT
sütun olmaktan çıkar. Sütun olarak tanımlanır Benzer şekilde, NOT NULL
ya da vardır DEFAULT
değeri, bu ayrıntılar bir yaparken dahil edilmesi gerekir MODIFY
veya CHANGE
sü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/