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

MySQL에서 행을 삽입하고 즉시 내용을 조회하는 방법

MySQL에서 행을 삽입하는 동시에 그 내용을 바로 가져오려면 저장 프로시저(Stored Procedure)를 활용하는 것이 가장 효과적입니다. 먼저 데이터를 저장할 테이블을 생성한 후, 행을 삽입하고 결과를 사용자에게 반환하는 저장 프로시저를 만들어야 합니다.

1단계: 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다. 아래 쿼리를 실행하면 자동 증가(AUTO_INCREMENT) 기본키와 이름 컬럼을 가진 테이블이 만들어집니다.

mysql> create table InsertRecord_SelectTable
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Name varchar(20),
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (1.45 sec)

2단계: 저장 프로시저 생성하기

이제 위 테이블에 레코드를 삽입한 직후, 해당 레코드를 즉시 조회하여 반환하는 저장 프로시저를 생성합니다. 핵심은 last_insert_id() 함수를 사용해 방금 삽입된 행의 ID를 얻어내는 것입니다.

mysql> DELIMITER //
mysql> create procedure Insert_select
   -> (
   -> In tempName varchar(40)
   -> )
   -> begin
   -> declare tempId int unsigned;
   -> insert into InsertRecord_SelectTable(Name) values (tempName);
   -> set tempId = last_insert_id();
   -> select *from InsertRecord_SelectTable where Id= tempId;
   -> END //
Query OK, 0 rows affected (0.21 sec)
mysql> DELIMITER ;

여기서 DELIMITER // 구문은 프로시저 본문의 세미콜론(;)이 MySQL 기본 구분자로 해석되지 않도록 임시로 구분자를 변경하는 역할을 하며, 프로시저 생성이 끝나면 반드시 원래대로 되돌려야 합니다.

3단계: 저장 프로시저 호출하기

생성된 프로시저는 다음 형식으로 호출할 수 있습니다.

CALL yourStoredProcedureName;

실제로 'John'이라는 이름을 인자로 전달하여 프로시저를 호출해 보겠습니다.

mysql> call Insert_select('John');

실행 결과 확인

프로시저가 정상적으로 실행되면 삽입된 행이 즉시 화면에 출력됩니다.

+----+------+
| Id | Name |
+----+------+
| 1  | John |
+----+------+
1 row in set (0.12 sec)
Query OK, 0 rows affected, 1 warning (0.13 sec)

이처럼 저장 프로시저 안에서 INSERT와 SELECT를 함께 처리하면, 애플리케이션 코드에서 별도의 조회 쿼리를 실행하지 않고도 삽입된 데이터를 한 번의 호출로 확인할 수 있습니다. 이 방식은 네트워크 왕복을 줄이고 작업의 원자성을 보장한다는 장점이 있습니다.