Hướng dẫn rename database mysql workbench - đổi tên cơ sở dữ liệu bàn làm việc mysql

13.1.36 & nbsp; đổi tên bảng câu lệnh bảng

RENAME TABLE
    tbl_name TO new_tbl_name
    [, tbl_name2 TO new_tbl_name2] ...

RENAME TABLE đổi tên một hoặc nhiều bảng. Bạn phải có các đặc quyền

RENAME TABLE old_table TO new_table;
0 và
RENAME TABLE old_table TO new_table;
1 cho bảng gốc và các đặc quyền
RENAME TABLE old_table TO new_table;
2 và
RENAME TABLE old_table TO new_table;
3 cho bảng mới.

Ví dụ: để đổi tên một bảng có tên

RENAME TABLE old_table TO new_table;
4 thành
RENAME TABLE old_table TO new_table;
5, hãy sử dụng câu lệnh này:

RENAME TABLE old_table TO new_table;

Tuyên bố đó tương đương với câu lệnh

RENAME TABLE old_table TO new_table;
6 sau:

ALTER TABLE old_table RENAME new_table;

RENAME TABLE, Không giống như

RENAME TABLE old_table TO new_table;
8, có thể đổi tên nhiều bảng trong một câu lệnh:

RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;

Đổi tên các hoạt động được thực hiện từ trái sang phải. Do đó, để trao đổi hai tên bảng, hãy làm điều này (giả sử rằng một bảng có tên trung gian

RENAME TABLE old_table TO new_table;
9 chưa tồn tại):

RENAME TABLE old_table TO tmp_table,
             new_table TO old_table,
             tmp_table TO new_table;

Khóa siêu dữ liệu trên các bảng được thu thập theo thứ tự tên, trong một số trường hợp có thể tạo ra sự khác biệt trong kết quả hoạt động khi nhiều giao dịch thực hiện đồng thời. Xem Phần & NBSP; 8.11.4, Siêu dữ liệu khóa siêu dữ liệu.

Kể từ MySQL 8.0.13, bạn có thể đổi tên các bảng bị khóa bằng câu lệnh

ALTER TABLE old_table RENAME new_table;
0, miễn là chúng bị khóa với khóa
ALTER TABLE old_table RENAME new_table;
1 hoặc là sản phẩm đổi tên các bảng ____ 21 được khóa từ các bước trước đó trong hoạt động đổi tên nhiều bảng. Ví dụ, điều này được cho phép:

LOCK TABLE old_table1 WRITE;
RENAME TABLE old_table1 TO new_table1,
             new_table1 TO new_table2;

Điều này không được phép:

LOCK TABLE old_table1 READ;
RENAME TABLE old_table1 TO new_table1,
             new_table1 TO new_table2;

Trước MySQL 8.0.13, để thực thi RENAME TABLE, không phải có bảng bị khóa với

ALTER TABLE old_table RENAME new_table;
4.

Với các điều kiện khóa bảng giao dịch được thỏa mãn, hoạt động đổi tên được thực hiện nguyên tử; Không có phiên nào khác có thể truy cập bất kỳ bảng nào trong khi Đổi tên đang được tiến hành.

Nếu bất kỳ lỗi nào xảy ra trong một RENAME TABLE, câu lệnh không thành công và không có thay đổi nào được thực hiện.

Bạn có thể sử dụng RENAME TABLE để di chuyển bảng từ cơ sở dữ liệu này sang cơ sở dữ liệu khác:

RENAME TABLE current_db.tbl_name TO other_db.tbl_name;

Sử dụng phương pháp này để chuyển tất cả các bảng từ một cơ sở dữ liệu sang một cơ sở dữ liệu khác trong hiệu ứng đổi tên cơ sở dữ liệu (một hoạt động mà MySQL không có câu lệnh duy nhất), ngoại trừ cơ sở dữ liệu gốc tiếp tục tồn tại, mặc dù không có bảng.

Giống như RENAME TABLE,

ALTER TABLE old_table RENAME new_table;
8 cũng có thể được sử dụng để di chuyển bảng sang cơ sở dữ liệu khác. Bất kể câu lệnh được sử dụng, nếu hoạt động đổi tên sẽ di chuyển bảng sang cơ sở dữ liệu nằm trên một hệ thống tệp khác, thì thành công của kết quả là cụ thể của nền tảng và phụ thuộc vào các cuộc gọi hệ điều hành cơ bản được sử dụng để di chuyển các tệp bảng.

Nếu một bảng có các yếu tố kích hoạt, các cố gắng đổi tên bảng thành một cơ sở dữ liệu khác không thành công với lỗi kích hoạt trong Lỗi lược đồ sai (

ALTER TABLE old_table RENAME new_table;
9).Trigger in wrong schema (
ALTER TABLE old_table RENAME new_table;
9) error.

Một bảng không được mã hóa có thể được chuyển sang cơ sở dữ liệu hỗ trợ mã hóa và ngược lại. Tuy nhiên, nếu biến

RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
0 được bật, đặc quyền
RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
1 là bắt buộc nếu cài đặt mã hóa bảng khác với mã hóa cơ sở dữ liệu mặc định.

Để đổi tên các bảng

RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
2,
RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
3 không hoạt động. Sử dụng
RENAME TABLE old_table TO new_table;
8 thay thế.

RENAME TABLE hoạt động cho các chế độ xem, ngoại trừ các chế độ xem không thể được đổi tên thành một cơ sở dữ liệu khác.

Bất kỳ đặc quyền nào được cấp cụ thể cho một bảng hoặc chế độ xem được đổi tên không được chuyển sang tên mới. Họ phải được thay đổi thủ công.

RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
6 thành
RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
7 Thay đổi tên ràng buộc khóa nước ngoài được tạo bên trong và tên ràng buộc khóa nước ngoài do người dùng xác định bắt đầu bằng chuỗi
RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
8_IBFK_ để phản ánh tên bảng mới.
RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
9 diễn giải các tên ràng buộc khóa nước ngoài bắt đầu bằng chuỗi ____ ____38_ibfk_, như các tên được tạo bên trong.
RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
8_ibfk_
to reflect the new table name.
RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
9 interprets foreign key constraint names that begin with the string
RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
8_ibfk_
as internally generated names.

Các tên ràng buộc chính của nước ngoài chỉ vào bảng được đổi tên được tự động cập nhật trừ khi có xung đột, trong trường hợp đó câu lệnh không lỗi. Một cuộc xung đột xảy ra nếu tên ràng buộc được đổi tên đã tồn tại. Trong những trường hợp như vậy, bạn phải bỏ và tạo lại các khóa nước ngoài để chúng hoạt động đúng.

RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
6 sang
RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
7 Thay đổi tên ràng buộc
RENAME TABLE old_table TO tmp_table,
             new_table TO old_table,
             tmp_table TO new_table;
3 do người dùng tạo ra và do người dùng xác định bắt đầu bằng chuỗi
RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
8_CHK_, để phản ánh tên bảng mới. MySQL diễn giải
RENAME TABLE old_table TO tmp_table,
             new_table TO old_table,
             tmp_table TO new_table;
3 Các tên ràng buộc bắt đầu bằng chuỗi ____ ____38_CHK_, như các tên được tạo bên trong. Thí dụ:
RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
8_chk_
to reflect the new table name. MySQL interprets
RENAME TABLE old_table TO tmp_table,
             new_table TO old_table,
             tmp_table TO new_table;
3 constraint names that begin with the string
RENAME TABLE old_table1 TO new_table1,
             old_table2 TO new_table2,
             old_table3 TO new_table3;
8_chk_
as internally generated names. Example:

mysql> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `i1` int(11) DEFAULT NULL,
  `i2` int(11) DEFAULT NULL,
  CONSTRAINT `t1_chk_1` CHECK ((`i1` > 0)),
  CONSTRAINT `t1_chk_2` CHECK ((`i2` < 0))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.02 sec)

mysql> RENAME TABLE t1 TO t3;
Query OK, 0 rows affected (0.03 sec)

mysql> SHOW CREATE TABLE t3\G
*************************** 1. row ***************************
       Table: t3
Create Table: CREATE TABLE `t3` (
  `i1` int(11) DEFAULT NULL,
  `i2` int(11) DEFAULT NULL,
  CONSTRAINT `t3_chk_1` CHECK ((`i1` > 0)),
  CONSTRAINT `t3_chk_2` CHECK ((`i2` < 0))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.01 sec)