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

MySQL 저장 프로시저(Stored Procedure)로 DELETE 쿼리 구현하는 방법

MySQL에서는 저장 프로시저(Stored Procedure)를 활용해 DELETE 쿼리를 실행할 수 있으며, 매개변수(Parameter)를 통해 값을 전달하는 방식으로 유연하게 삭제 작업을 처리할 수 있습니다. 이번 글에서는 실제 예제를 통해 저장 프로시저로 DELETE 쿼리를 구현하는 전체 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable1464
    -> (
    -> Id int,
    -> FirstName varchar(20)
    -> );
Query OK, 0 rows affected (0.51 sec)

2. 샘플 데이터 삽입하기

INSERT 명령어를 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable1464 values(101,'Chris Brown');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1464 values(102,'John Doe');
Query OK, 1 row affected (0.09 sec)

3. 현재 데이터 확인하기

SELECT 문을 사용해 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable1464;

실행 결과는 다음과 같습니다.

+------+-------------+
| Id   | FirstName   |
+------+-------------+
|  101 | Chris Brown |
|  102 | John Doe    |
+------+-------------+
2 rows in set (0.00 sec)

4. DELETE 쿼리가 포함된 저장 프로시저 생성하기

이제 DELETE 쿼리를 수행하는 저장 프로시저를 만들어 보겠습니다. 프로시저는 IdFirstName 두 개의 입력 매개변수(IN)를 받아, 두 조건이 모두 일치하는 레코드만 삭제하도록 구성했습니다.

mysql> DELIMITER //
mysql> CREATE PROCEDURE delete_demo(IN local_Id int, IN local_Name varchar(20))
    -> BEGIN
    ->     delete from DemoTable1464
    ->     where Id=local_Id and
    ->       FirstName=local_Name;
    -> END //
Query OK, 0 rows affected (0.24 sec)
mysql> DELIMITER ;

참고: 저장 프로시저 본문 내부의 세미콜론(;)과 문장 종료를 구분하기 위해 DELIMITER //로 구분 기호를 임시 변경한 뒤, 프로시저 생성이 끝나면 원래대로 DELIMITER ;로 되돌려야 합니다.

5. 저장 프로시저 호출하기

생성된 프로시저는 CALL 명령어로 호출할 수 있습니다. 여기서는 Id가 102이고 이름이 'John Doe'인 레코드를 삭제해 보겠습니다.

mysql> call delete_demo(102,'John Doe');
Query OK, 1 row affected, 1 warning (0.11 sec)

6. 삭제 결과 확인하기

프로시저 실행 후 테이블을 다시 조회하여 레코드가 정상적으로 삭제되었는지 확인합니다.

mysql> select * from DemoTable1464;

실행 결과는 다음과 같습니다.

+------+-------------+
| Id   | FirstName   |
+------+-------------+
|  101 | Chris Brown |
+------+-------------+
1 row in set (0.00 sec)

위 과정처럼 저장 프로시저에 매개변수를 전달하면, 조건에 맞는 특정 레코드만 안전하고 반복 가능한 방식으로 삭제할 수 있습니다. 애플리케이션 코드에서 삭제 로직을 직접 작성하는 대신 저장 프로시저를 활용하면 SQL 로직을 중앙에서 관리할 수 있어 유지보수에도 큰 도움이 됩니다.