MySQL INFORMATION_SCHEMA
cơ sở dữ liệu để giải cứu:
-- First check if the table exists
IF EXISTS(SELECT table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'db_name'
AND table_name LIKE 'wild')
-- If exists, retreive columns information from that table
THEN
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tbl_name'
AND table_schema = 'db_name';
-- do some action, i.e. ALTER TABLE if some columns are missing
ALTER TABLE ...
-- Table does not exist, create a new table
ELSE
CREATE TABLE ....
END IF;
Thông tin thêm:
- Hướng dẫn sử dụng MySQL: Chương 19. Bảng INFORMATION_SCHEMA
- Hướng dẫn sử dụng MySQL: Bảng INFORMATION_SCHEMA TABLES
- Hướng dẫn Tham khảo MySQL: Bảng INFORMATION_SCHEMA COLUMNS
CẬP NHẬT:
Một tùy chọn khác, có thể dễ dàng hơn, là bỏ bảng hiện có và tạo lại nó một lần nữa với lược đồ mới. Để làm điều này, bạn cần:
- Tạo bảng tạm thời, một bản sao chính xác của bảng hiện có
- Điền vào bảng tạm thời với dữ liệu từ bảng cũ
- Bỏ bảng cũ
- Tạo bảng mới với giản đồ mới
- Điền vào bảng mới với thông tin từ bảng tạm thời
- Bỏ bảng tạm thời.
Vì vậy, trong mã SQL:
CREATE TABLE old_table_copy LIKE old_table;
INSERT INTO old_table_copy
SELECT * FROM old_table;
DROP TABLE old_table;
CREATE TABLE new_table (...new values...);
INSERT INTO new_table ([... column names from old table ...])
SELECT [...column names from old table ...]
FROM old_table_copy;
DROP TABLE old_table_copy;
Trên thực tế, bước cuối cùng, "Bỏ bảng tạm thời", bạn có thể bỏ qua một lúc. Đề phòng trường hợp, bạn muốn có một số loại bản sao lưu của bảng cũ, "chỉ trong trường hợp".
Thông tin thêm:
- Hướng dẫn sử dụng MySQL: Cú pháp TẠO BẢNG
- Hướng dẫn Tham khảo MySQL: CHÈN Cú pháp
- Hướng dẫn sử dụng MySQL: CHÈN ... Cú pháp CHỌN