MySQL 트리거 관련 질문입니다. 많은 답변 부탁드립니다. 0 7 635

by 문성주 [MySQL] [2018.09.17 16:16:51]


처음 접해보는거라 어렵습니다...ㅠ.ㅠ 삽질도 오래 했구요...ㅠ.ㅠ

물론 초급이기도 하구요..ㅠ.ㅠ

 

MySQL 트리거 관련 질문 입니다.

다름이 아니라 


A테이블(로그 테이블) 에 ROW가 한줄 입력(INSERT) 되면 트리거에 의해 

> B테이블(알림톡 발송 테이블) 에 특정 값을 INSERT 해 알림톡 발송을 하려고 합니다.


그런데 이때 

알림톡 발송을 한사람에게 보낼께 아니라 3사람에게 보내야 합니다. 

(알림톡 테이블은 데이터가 입력되면 자동으로 발송되게 되어 있습니다.)


그래서 A테이블에서 INSERT 발생시 트리거에 의해 

B테이블에 각각 다른 전화번호를 가진 데이터를 총 3번 INSERT 하여 알림톡을 총 3명에게 발송하려 합니다.


그래서 아래와 같이 구현을 해 보왔습니다.

따로 개발 테스트가 힘들어 운영에서 바로 테스트을 해야하는 환경이라 이렇게 구현하면 될지 확인 및 많은 답변 부탁드립니다.

 

DELIMITER$$

CREATE 트리거이름

AFTER INSERT ON A_로고_테이블

FOR EACH ROW

BEGIN


INSERT INTO B_알림톡_테이블(AAAA, BBBB, CCCC, DDDD, EEEE, FFFF, GGGG, HHHH, JJJJ, KKKK, LLLL, MMMM, NNNN, OOOO, PPPP, QQQQ, RRRR) 

VALUES ('1810012552', '결제오류가 발생하였습니다. 결제정보 확인 부탁드립니다.', '결제오류 발생', '결제오류가 발생하였습니다. 결제정보 확인 부탁드립니다.', '003', '002', '004', '01011111111', '01011111111', 'R00', NOW(), '10002', NOW(), '', 'N', '', '');


INSERT INTO B_알림톡_테이블(AAAA, BBBB, CCCC, DDDD, EEEE, FFFF, GGGG, HHHH, JJJJ, KKKK, LLLL, MMMM, NNNN, OOOO, PPPP, QQQQ, RRRR) 

VALUES ('1810012552', '결제오류가 발생하였습니다. 결제정보 확인 부탁드립니다.', '결제오류 발생', '결제오류가 발생하였습니다. 결제정보 확인 부탁드립니다.', '003', '002', '004', '01022222222', '01022222222', 'R00', NOW(), '10002', NOW(), '', 'N', '', '');


INSERT INTO B_알림톡_테이블(AAAA, BBBB, CCCC, DDDD, EEEE, FFFF, GGGG, HHHH, JJJJ, KKKK, LLLL, MMMM, NNNN, OOOO, PPPP, QQQQ, RRRR) 

VALUES ('1810012552', '결제오류가 발생하였습니다. 결제정보 확인 부탁드립니다.', '결제오류 발생', '결제오류가 발생하였습니다. 결제정보 확인 부탁드립니다.', '003', '002', '004', '01033333333', '01033333333', 'R00', NOW(), '10002', NOW(), '', 'N', '', '');


END

$$DELIMITER;

 

 

 

by 마농 [2018.09.17 16:41:56]

1. 네. insert 구문 3번 쓰면 됩니다.
2. 다만. 오타가 좀 있구요.
  - VALIES
3. 입력값들이 죄다 상수값이네요?
  - 로그테이블의 컬럼값(NEW.COLUMN_NAME)을 이용해야 하는게 아닐까? 생각되네요.
4. 테스트는
  - 뭐가 힘들까요? 개발에서 테스트 꼭 해보세요.


by 문성주 [2018.09.17 16:51:11]

1. 네. insert 구문 3번 쓰면 됩니다.

=> 답변 감사합니다.


2. 다만. 오타가 좀 있구요.
  - VALIES

=> 오타 수정했습니다. 소중한 답변 감사합니다.


3. 입력값들이 죄다 상수값이네요?
  - 로그테이블의 컬럼값(NEW.COLUMN_NAME)을 이용해야 하는게 아닐까? 생각되네요.

=> 로그테이블과 알림톡 테이블의 컬럼 내용이 전혀 달라 로그 테이블의 컬럼값을 알림톡테이블에서

     사용할수 없는 상태입니다. 그래서 알림톡 테이블에 상수값을 직접 넣어 주웠습니다. 잘못된 구현일까요?


4. 테스트는
  - 뭐가 힘들까요? 개발에서 테스트 꼭 해보세요.

  => 개발기를 만들어 테스트 해보도록 하겠습니다. 감사합니다.

 


by 마농 [2018.09.17 17:07:53]

어떤 값이 들어와도 매번 똑같은 3개 번호로 매번 똑같은 내용의 알림이 갈텐데요?
로그 내용에 따라서 알림 받을 번호나 내용이 바뀌어야 하는 것 아닌가요?


by 문성주 [2018.09.17 17:46:16]

만약 => 모든 내용은 다 동일해야 하고, 전화번호만 다르게 해서 3번 INSERT 하면 되고, 3개의 전화번호 역시 항상 고정이라면 위와 같이 구현을 해도 괜찮을까요? 


by 신이만든지기 [2018.09.17 18:04:58]

전화번호는 별도의 테이블을 하나 생성하여 넣어두고, 전화번호 개수만큼 루프를 돌리는 방식으로 데이터를 넣는 것이 좋을 것 같네요.

분명 나중에 전화번호의 추가/변경/삭제가 일어날 겁니다. 그때마다 트리거를 바꾼다는 것도 일이 될 것 같습니다.


by 마농 [2018.09.17 18:07:24]

만약이라는 가정을 한다고 한다면 가능한 일이기도 하겠지만?
그 만약이라는 가정이 실제로 가능한 상황인지 의심이 드네요.
스스로 판단해도 될 것을 너무 의존적으로 물어보는 듯한 느낌도 듭니다.


by 문성주 [2018.09.18 14:25:17]

일단 개발기 셋팅해서 상수로 값 넣고 돌려보고, 안되면 트리거용 테이블 생성해서 말씀하신것처럼 처리하도록 하겠습니다.

아무래도 잘 모르고, 해결은 해야하고, 운영기에 바로 적용을 해야 하다 보니 의존적이었던것 같습니다. 느낌이 아니라

의존하고 싶어 글을 올린겁니다. 불편을 드렸다면 죄송합니다. 홧팅 하도록 하겠습니다. 수고하세요^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입