[mysql] 테이블 복사 후 auto_incrememt 그대로 유지하는 방법
php로 코딩하던 중 mysql로 table을 복사하고 이를 활용하기 위해서,
기존테이블의 속성을 그래도 복사하고 싶은데,
단순히 create table만 하면,
기존의 테이블의 속성, primary Key와 autoincrement가 함께 복사되지 않는 문제점이 있어,
아래의 3가지를 함께 실행하면 될 것입니다.
mysql 명령창에서
1. 복사하기
create table 새로만들 테이블이름 select * from 기존에있던 테이블 이름
eg . ) create table steelsourcetmp select * from steelsource;
2. 기존 데이터 삭제하기 (선택) (스킵가능함.)
단, 기존 데이터를 그대로 보존할 사람은 삭제하지 마시고 진행하세요.
주의하세요. ) 이건 지우는 기능 delete from 새로만든 테이블 -> 데이터만 삭제됩니다.
&&&&& delete from new
3. PRIMARY KEY 지정하기
필수 기억해야할 사항) PRIMARY KEY가 지정돼있지 않으면 auto_increment가 되지 않는다는 것입니다.
ALTER TABLE 새로만든테이블 ADD PRIMARY KEY(지정할 컬럼명 )
eg 실전예) 2) ALTER TABLE steelsourcetmp ADD PRIMARY KEY(num);
그럼, 이렇게 바뀌어 있습니다.
이제, 마지막으로 auto_increment 지정하면 끝나겠죠?
4. auto_increment 지정하기
Alter table new modify 지정할컬럼명 int auto_increment
eg) Alter table new modify no int auto_increment
실행 후 다시 적용된 하면을 보면 아래와 같이 나옵니다.
테이블 구조를 보면 num에 '키' 표시가 좌측에 되어있고, 추가란엔 'AUTO_INCREMENT'가 적용된 것을 볼 수 있습니다.
마지막으로 예시를 정리하면, 기존 데이터를 그대로 복사하는 방법은 아래와 같습니다.
1) create table steelsourcetmp select * from steelsource;
2) ALTER TABLE steelsourcetmp ADD PRIMARY KEY(num);
3) Alter table steelsourcetmp modify num int auto_increment;
이렇게 하면, 테이블을 AUTO_INCREMENT 포함한 복사가 되는 것입니다.