반응형

 

CREATE TABLE LIKE 문은 기존 테이블의 구조와 동일한 새 테이블을 생성하는 데 사용할 수 있다.

사용법은 간단하나 주의사항을 모르고 있다가 피를 본 경험이 있어 아래에 정리하게 되었다.

사용법

CREATE TABLE new_table LIKE old_table;

새 테이블은 기존 테이블과 동일한 열, 인덱스 및 기타 속성을 갖는다. 하지만 복사되지 않는 일부의 정보가 있다.

주의사항

기존 테이블과 동일하게 유지되는 것들은 사용자가 기대하는 동작이니, 유지가 되지 않는 것에 대해 알아보자.

CREATE TABLE ... LIKE does not preserve any DATA DIRECTORY or INDEX DIRECTORY table options that were specified for the original table, or any foreign key definitions.

도큐먼트 내용 중 일부인데 여기서 주의할 사항은 FK의 정리를 유지하지 않는다고 한다.

해당 구문을 사용하는 이유는 다양하겠으나, FK 또한 보존이 필요한 경우가 있을 경우 이 주의사항에 인지하고서 별도로 적용해주거나, 백업용도라면 보관해두어야 한다.

참고문서

https://dev.mysql.com/doc/refman/8.0/en/create-table-like.html

 

MySQL :: MySQL 8.0 Reference Manual :: 13.1.20.3 CREATE TABLE ... LIKE Statement

13.1.20.3 CREATE TABLE ... LIKE Statement Use CREATE TABLE ... LIKE to create an empty table based on the definition of another table, including any column attributes and indexes defined in the original table: CREATE TABLE new_tbl LIKE orig_tbl; The copy

dev.mysql.com

 

반응형