본문 바로가기
Database/MYSQL

프로시져별 트랜잭션 테스트

by 반화넬 2020. 1. 16.
반응형


프로시져별 트랜잭션 테스트


DROP TABLE radio_room_list;
CREATE TABLE radio_room_list (
  reg_no INT(11) NOT NULL DEFAULT 0  COMMENT '고유번호',
  upd_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '변경일자',
  PRIMARY KEY (reg_no)
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='임시테이블';





DELIMITER $$

USE `DB_NAME`$$

DROP PROCEDURE IF EXISTS `PROCEDURE_NAME`$$

CREATE PROCEDURE `PROCEDURE_NAME`(
 regNo int   -- 입력값
)
    READS SQL DATA
    COMMENT '트랜잭션 테스트'
BEGIN

 
 /* 만약 SQL에러라면 ROLLBACK 처리한다. */
 DECLARE EXIT HANDLER FOR SQLEXCEPTION
 BEGIN
  ROLLBACK;       
  SET s_return = -1; 
 END; 
 
 START TRANSACTION;
 IF memNo>0 THEN
  
  INSERT INTO test_tb (reg_no,upd_date) VALUES (regNo,NOW()) on DUPLICATE KEY UPDATE upd_date = NOW();

  INSERT INTO test_tb (reg_no) VALUES (regNo);

  
 END IF;
 COMMIT;
 
 
END$$

DELIMITER ;




CALL DB_NAME.PROCEDURE_NAME(12345);


반응형