Tôi đã kiểm tra Tài liệu MySQL cho ALTER TABLE và nó dường như không bao gồm cách thêm hoặc sửa đổi nhận xét vào một cột. Tôi có thể làm cái này như thế nào?
-- for table
ALTER TABLE myTable COMMENT 'Hello World'
-- for columns
-- ???
Tôi đã kiểm tra Tài liệu MySQL cho ALTER TABLE và nó dường như không bao gồm cách thêm hoặc sửa đổi nhận xét vào một cột. Tôi có thể làm cái này như thế nào?
-- for table
ALTER TABLE myTable COMMENT 'Hello World'
-- for columns
-- ???
Câu trả lời:
thử:
ALTER TABLE `user` CHANGE `id` `id` INT( 11 ) COMMENT 'id of user'
Bạn có thể sử dụng MODIFY COLUMN
để làm điều này. Cứ làm đi...
ALTER TABLE YourTable
MODIFY COLUMN your_column
your_previous_column_definition COMMENT "Your new comment"
thay thế:
YourTable
với tên bàn của bạnyour_column
với tên nhận xét của bạnyour_previous_column_definition
với định nghĩa column_definition của cột , tôi khuyên bạn nên nhận thông qua một SHOW CREATE TABLE YourTable
lệnh và sao chép nguyên văn để tránh bất kỳ bẫy nào. *Your new comment
với nhận xét cột mà bạn muốn.Ví dụ...
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)
* Bất cứ khi nào bạn sử dụng MODIFY
hoặc CHANGE
mệnh đề trong một ALTER TABLE
câu lệnh, tôi khuyên bạn nên sao chép định nghĩa cột từ đầu ra của một SHOW CREATE TABLE
câu lệnh. Điều này bảo vệ bạn khỏi việc vô tình làm mất một phần quan trọng trong định nghĩa cột của bạn do không nhận ra rằng bạn cần đưa nó vào MODIFY
hoặc CHANGE
mệnh đề của bạn . Ví dụ: nếu bạn MODIFY
là một AUTO_INCREMENT
cột, bạn cần chỉ định rõ ràng lại công cụ AUTO_INCREMENT
sửa đổi trong MODIFY
mệnh đề, nếu không cột sẽ không còn là một AUTO_INCREMENT
cột. Tương tự, nếu cột được xác định là NOT NULL
hoặc có một DEFAULT
giá trị, những chi tiết này cần được đưa vào khi thực hiện một MODIFY
hoặc CHANGE
trên cột, nếu không chúng sẽ bị mất.
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
Lưu ý: Bạn chỉ có thể cải thiện thành một bảng nếu muốn
Giải pháp được đưa ra bởi @Rufinus là tuyệt vời nhưng nếu bạn có tăng tự động, nó sẽ phá vỡ nó.
dump.aux_comment,
cần phải như vậy column_comment,
. Bạn vui lòng kiểm tra xem nó có đúng không?
ALTER TABLE MODIFY id INT NOT NULL AUTO_INCREMENT COMMENT 'id of user';
. Điều này không phá vỡ gia số tự động.
Lược đồ thông tin không phải là nơi để xử lý những thứ này (xem các lệnh cơ sở dữ liệu DDL).
Khi bạn thêm bình luận, bạn cần thay đổi cấu trúc bảng (bình luận bảng).
Từ tài liệu MySQL 5.6:
INFORMATION_SCHEMA là một cơ sở dữ liệu trong mỗi phiên bản MySQL, nơi lưu trữ thông tin về tất cả các cơ sở dữ liệu khác mà máy chủ MySQL duy trì. Cơ sở dữ liệu INFORMATION_SCHEMA chứa một số bảng chỉ đọc. Chúng thực sự là dạng xem, không phải bảng cơ sở, vì vậy không có tệp nào được liên kết với chúng và bạn không thể đặt trình kích hoạt trên chúng. Ngoài ra, không có thư mục cơ sở dữ liệu với tên đó.
Mặc dù bạn có thể chọn INFORMATION_SCHEMA làm cơ sở dữ liệu mặc định với câu lệnh USE, bạn chỉ có thể đọc nội dung của các bảng chứ không thể thực hiện các thao tác CHÈN, CẬP NHẬT hoặc XÓA trên chúng.
Theo tài liệu, bạn chỉ có thể thêm nhận xét tại thời điểm tạo bảng. Vì vậy nhất thiết phải có bảng định nghĩa. Một cách để tự động hóa nó bằng cách sử dụng script để đọc định nghĩa và cập nhật nhận xét của bạn.
Tài liệu tham khảo:
http://cornempire.net/2010/04/15/add-comments-to-column-mysql/