Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 프로시저에서 테이블 이름을 쉽게 변경하는 방법

MySQL 프로시저에서 테이블 이름 변경하기

네, 가능합니다. ALTER 명령어와 RENAME을 함께 사용하면 저장 프로시저 안에서도 간단하게 테이블 이름을 변경할 수 있습니다. 먼저 예제용 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1859
    (
    Id int
    );
Query OK, 0 rows affected (0.00 sec)

insert 명령어를 사용해 테이블에 레코드를 삽입합니다.

mysql> insert into DemoTable1859 values(101);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1859 values(102);
Query OK, 1 row affected (0.00 sec)

select 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable1859;

위 쿼리는 다음과 같은 결과를 출력합니다.

+------+
| Id   |
+------+
|  101 |
|  102 |
+------+
2 rows in set (0.00 sec)

다음은 저장 프로시저를 생성하고 그 안에서 테이블 이름을 변경하는 쿼리입니다.

mysql> delimiter //
mysql> create procedure alter_table_name_sp()
    begin
    alter table DemoTable1859 rename exampleTable;
    end
    //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;

call 명령어로 저장 프로시저를 호출합니다.

mysql> call alter_table_name_sp();
Query OK, 0 rows affected (0.00 sec)

select 명령어로 테이블 이름이 실제로 변경되었는지 확인합니다.

mysql> select * from exampleTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+------+
| Id   |
+------+
|  101 |
|  102 |
+------+
2 rows in set (0.00 sec)

정리

이처럼 MySQL에서는 저장 프로시저 내부에서도 ALTER TABLE ... RENAME 구문을 사용해 손쉽게 테이블 이름을 변경할 수 있습니다. 프로시저 실행 후에는 기존 테이블명(DemoTable1859)이 더 이상 존재하지 않으며, 새 테이블명(exampleTable)으로 데이터가 그대로 유지되는 것을 확인할 수 있습니다. 참고로 프로시저 작성 시 delimiter //로 구분자를 변경한 뒤, 작성이 끝나면 반드시 delimiter ;로 원래 상태로 되돌려 주어야 이후 SQL 문장이 정상적으로 실행됩니다.