13.1.32 RENAME TABLE 구문
RENAME TABLE tbl_name
TO new_tbl_name
[, tbl_name2
TO new_tbl_name2
] ...
이 문은 하나 이상의 테이블의 이름을 변경합니다.
이름 변경 작업은 원자 적으로 실행됩니다. 즉, 이름 바꾸기가 실행되는 동안 다른 세션은 어느 테이블에 액세스 할 수 없습니다. 예를 들어 기존 테이블 old_table
가 존재하는 경우는 다음과 같이 동일한 구조를 가지고 있지만 비어있는 다른 테이블 new_table
을 생성하고 기존의 테이블을 그 빈 테이블에 대체 할 수 하다합니다 ( backup_table
는 아직 존재하지 않는 것으로 가정합니다).
CREATE TABLE new_table (...); RENAME TABLE old_table TO backup_table, new_table TO old_table;
이 문에서 여러 테이블의 이름을 변경하는 경우, 이름 변경 작업은 왼쪽에서 오른쪽으로 실행됩니다. 두 테이블 이름을 스왑하려면 다음과 같이 실행할 수 있습니다 ( tmp_table
는 아직 존재하지 않는 것으로 가정합니다).
RENAME TABLE old_table TO tmp_table, new_table TO old_table, tmp_table TO new_table;
두 데이터베이스가 동일한 파일 시스템에 존재하는 한, RENAME TABLE
을 사용하여 데이터베이스에서 다른 데이터베이스에 테이블을 이동할 수 있습니다.
RENAME TABLE current_db.tbl_name
TO other_db.tbl_name;
RENAME TABLE
을 사용하여 다른 데이터베이스로 이동 된 테이블과 연관된 트리거가 존재하는 경우 문이 오류 Trigger in wrong schema에 실패합니다.
뷰의 이름을 변경하여 다른 데이터베이스로 이동하려고하지 않는 한, RENAME TABLE
은보기에도 작동합니다.
이름 변경된 테이블 또는 뷰 전용으로 부여 된 권한은 모두 새 이름은 마이그레이션되지 않습니다. 그들은 수동으로 변경해야합니다.
RENAME
을 실행하려면 잠긴 테이블과 활성 트랜잭션이 존재해서는 없습니다. 또한 원래의 테이블에 대한 ALTER
및 DROP
권한과 새 테이블에 대한 CREATE
및 INSERT
권한도 필요합니다.
여러 테이블의 이름 변경에서 어떠한 에러가 발생했을 경우, MySQL은 모두 원래 상태로 되돌리기 위해 이름 변경 된 모든 테이블에 대해 역방향 이름 변경을 수행합니다.
RENAME
을 사용하여 TEMPORARY
테이블의 이름을 변경할 수 없습니다. 그러나 대신 ALTER TABLE
을 사용할 수 있습니다.
mysql> ALTER TABLE orig_name RENAME new_name;
이 이름 변경 작업을 통해 테이블이 다른 파일 시스템에있는 데이터베이스로 이동되는 경우, 결과의 성공은 플랫폼 고유하며 테이블 파일을 이동하는 데 사용되는 기본 운영 시스템 호출에 의존합니다 .