시나리오에서 FlexSQL로 데이터 수정하기
시나리오에서 FlexSQL로 데이터 수정하기
이전 강의에서는 FlexSQL 서비스를 활용해 데이터를 조회하는 방법을 살펴봤어요. 이번 강의에서는 조회한 데이터를 기반으로 시나리오에서 FlexSQL 서비스를 호출해 데이터를 수정하는 방법을 단계별로 소개할게요. 예시로 직장인 소원 물류센터의 품목 정보를 수정하는 관리자용 PC 웹 애플리케이션을 설명합니다.
1단계 : 시나리오에서 수정 이벤트 연결하기
-
스튜디오에서 Dev 모드로 이동
flexsql/6-5/6-5%20FlexSQL_U.00_00_21_03.%EC%8A%A4%ED%8B%B8%20001.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_00_21_03.%EC%8A%A4%ED%8B%B8%20001.jpg)
2. 수정 버튼에 클릭 이벤트 사용 (이벤트명 : 수정)
flexsql/6-5/6-5%20FlexSQL_U.00_00_31_06.%EC%8A%A4%ED%8B%B8%20002.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_00_31_06.%EC%8A%A4%ED%8B%B8%20002.jpg)
3. 연결 아이콘 클릭
flexsql/6-5/6-5%20FlexSQL_U.00_00_32_02.%EC%8A%A4%ED%8B%B8%20003.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_00_32_02.%EC%8A%A4%ED%8B%B8%20003.jpg)
4. 서비스 추가
5. 서비스 종류를 FlexSQL로 선택
flexsql/6-5/6-5%20FlexSQL_U.00_00_40_15.%EC%8A%A4%ED%8B%B8%20004.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_00_40_15.%EC%8A%A4%ED%8B%B8%20004.jpg)
2단계 : FlexSQL 스크립트 생성하기
-
FlexSQL 스크립트를 생성하기 위해 워크스페이스 - 좌측 데이터 메뉴 - FlexSQL 페이지로 이동
-
좌측 하단 새 SQL 서비스 클릭 후 스크립트 명 입력 (스크립트 명 : Update_WishProduct)
flexsql/6-5/6-5%20FlexSQL_U.00_00_45_01.%EC%8A%A4%ED%8B%B8%20005.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_00_45_01.%EC%8A%A4%ED%8B%B8%20005.jpg)
3. 우측 자동 생성 기능 사용
flexsql/6-5/6-5%20FlexSQL_U.00_00_57_26.%EC%8A%A4%ED%8B%B8%20006.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_00_57_26.%EC%8A%A4%ED%8B%B8%20006.jpg)
4. 테이블명 : WishProduct / 유형 : Update 선택 후 SQL 생성
-
-
자동으로 생성된 수정 스크립트에서는 시나리오에서 전달된 첫 번째 보내는 데이터에 접근하고 반복문을 통해 하위 섹터들의 값을 기준으로 업데이트 구문을 생성하도록 구성되어 있습니다.
-
flexsql/6-5/6-5%20FlexSQL_U.00_01_11_28.%EC%8A%A4%ED%8B%B8%20007.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_01_11_28.%EC%8A%A4%ED%8B%B8%20007.jpg)
5. FlexSQL 상단 더보기 버튼 클릭
flexsql/6-5/6-5%20FlexSQL_U.00_01_24_18.%EC%8A%A4%ED%8B%B8%20008.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_01_24_18.%EC%8A%A4%ED%8B%B8%20008.jpg)
6. 새 버전 발행 버튼 선택 - 버전 1로 발행 완료
flexsql/6-5/6-5%20FlexSQL_U.00_01_28_19.%EC%8A%A4%ED%8B%B8%20009.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_01_28_19.%EC%8A%A4%ED%8B%B8%20009.jpg)
3단계 : 시나리오에 FlexSQL 수정 스크립트 연결하기
다시 스튜디오로 돌아와 수정 스크립트를 시나리오에 연결합니다.
-
서비스 - 시스템 정보 - SQL Script Name : Update_WishProduct / SQL Script Version : 1
flexsql/6-5/6-5%20FlexSQL_U.00_01_43_05.%EC%8A%A4%ED%8B%B8%20010.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_01_43_05.%EC%8A%A4%ED%8B%B8%20010.jpg)
2. 보내는 데이터에 카테고리 설정 (카테고리명 : wish)
flexsql/6-5/6-5%20FlexSQL_U.00_01_44_15.%EC%8A%A4%ED%8B%B8%20011.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_01_44_15.%EC%8A%A4%ED%8B%B8%20011.jpg)
3. 수정된 섹터만 전달하기 위해 필터 설정 - 필터 사용 활성화 - Status 필터 : Updated
flexsql/6-5/6-5%20FlexSQL_U.00_01_54_09.%EC%8A%A4%ED%8B%B8%20012.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_01_54_09.%EC%8A%A4%ED%8B%B8%20012.jpg)
4. 받는 데이터 제거
flexsql/6-5/6-5%20FlexSQL_U.00_01_57_25.%EC%8A%A4%ED%8B%B8%20013.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_01_57_25.%EC%8A%A4%ED%8B%B8%20013.jpg)
4단계 : 디버거로 수정 결과 확인하기
-
시나리오 우측 상단의 화살표 (▶) 클릭하여 디버거 실행
flexsql/6-5/6-5%20FlexSQL_U.00_02_06_00.%EC%8A%A4%ED%8B%B8%20014.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_02_06_00.%EC%8A%A4%ED%8B%B8%20014.jpg)
2. 품목 정보 수정 후 수정 버튼 클릭
flexsql/6-5/6-5%20FlexSQL_U.00_02_29_03.%EC%8A%A4%ED%8B%B8%20015.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_02_29_03.%EC%8A%A4%ED%8B%B8%20015.jpg)
3. 우측 로그에서 FlexSQL 서비스 호출 여부 확인
flexsql/6-5/6-5%20FlexSQL_U.00_02_37_16.%EC%8A%A4%ED%8B%B8%20016.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_02_37_16.%EC%8A%A4%ED%8B%B8%20016.jpg)
4. 새로 고침 후에도 수정된 값이 유지되는지 확인
flexsql/6-5/6-5%20FlexSQL_U.00_02_44_09.%EC%8A%A4%ED%8B%B8%20017.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_02_44_09.%EC%8A%A4%ED%8B%B8%20017.jpg)
📌 수정 시 주의사항 : 자동 채번 키 문제 이해하기
기존에 데이터는 정상적으로 수정되지만, 데이터를 새로 저장한 뒤 이어서 바로 수정하면 수정 내용이 반영되지 않고 있습니다.
데이터를 수정하면 테이블의 키 값인 시퀀스(seq)를 기준으로 동작하는데요. 시퀀스 값은 데이터가 DB에 저장된 이후에 자동으로 생성되기 때문에 새로 저장한 직후에는 시나리오의 카테고리 데이터에 해당 값이 아직 없습니다.
이 상태에서 수정 요청을 보내면 조건값이 null이 되어 수정 대상 데이터를 찾지 못하게 됩니다. 따라서 저장 후 생성된 시퀀스 값을 다시 조회해 카테고리 섹터와 병합하는 과정이 필요해요.
flexsql/6-5/6-5%20FlexSQL_U.00_03_31_23.%EC%8A%A4%ED%8B%B8%20018.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_03_31_23.%EC%8A%A4%ED%8B%B8%20018.jpg)
5단계 : 저장 스크립트 수정하기
-
저장 버튼에 연결된 이벤트에서 서비스 이동
flexsql/6-5/6-5%20FlexSQL_U.00_04_17_22.%EC%8A%A4%ED%8B%B8%20019.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_04_17_22.%EC%8A%A4%ED%8B%B8%20019.jpg)
2. 서비스 - 시스템 정보 - SQL Script Name의 연결 아이콘 클릭 - FlexSQL 페이지로 이동
flexsql/6-5/6-5%20FlexSQL_U.00_04_22_29.%EC%8A%A4%ED%8B%B8%20020.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_04_22_29.%EC%8A%A4%ED%8B%B8%20020.jpg)
3. 기존 스크립트 삭제
flexsql/6-5/6-5%20FlexSQL_U.00_04_29_21.%EC%8A%A4%ED%8B%B8%20021.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_04_29_21.%EC%8A%A4%ED%8B%B8%20021.jpg)
4. 자동 생성 기능 사용
5. 테이블명 : WishProduct / 유형 : Insert 선택 / 결과값 반영하기 옵션 선택 - SQL 생성
-
- 새로 생성된 SQL 구문은 테이블에 저장된 데이터를 카테고리 섹터에도 반영하기 위해서 TempTable을 사용하여 마지막에 조회하도록 구성되어 있습니다. 그리고 병합을 위해 섹터의 아이딩 값이 SUID도 같이 반환하고 있습니다.
flexsql/6-5/6-5%20FlexSQL_U.00_04_48_18.%EC%8A%A4%ED%8B%B8%20022.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_04_48_18.%EC%8A%A4%ED%8B%B8%20022.jpg)
- 새로 생성된 SQL 구문은 테이블에 저장된 데이터를 카테고리 섹터에도 반영하기 위해서 TempTable을 사용하여 마지막에 조회하도록 구성되어 있습니다. 그리고 병합을 위해 섹터의 아이딩 값이 SUID도 같이 반환하고 있습니다.
6. FlexSQL 상단 더보기 버튼 클릭
flexsql/6-5/6-5%20FlexSQL_U.00_05_09_18.%EC%8A%A4%ED%8B%B8%20023.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_05_09_18.%EC%8A%A4%ED%8B%B8%20023.jpg)
7. 새 버전 발행 버튼 선택 - 버전 2로 발행 완료
-
-
추가 수정이 발생하는 경우에는 새 버전 발행, 현재 버전으로 변경 내역 반영이라는 두 가지 방식 중 원하는 방식으로 적용 가능
-
flexsql/6-5/6-5%20FlexSQL_U.00_05_18_11.%EC%8A%A4%ED%8B%B8%20024.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_05_18_11.%EC%8A%A4%ED%8B%B8%20024.jpg)
6단계 : 시나리오 설정 업데이트 및 최종 확인하기
-
저장 이벤트에 연결된 SQL Script Version을 2로 변경
-
받는 데이터에 ResultBlock 추가
flexsql/6-5/6-5%20FlexSQL_U.00_05_51_08.%EC%8A%A4%ED%8B%B8%20025.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_05_51_08.%EC%8A%A4%ED%8B%B8%20025.jpg)
3. 카테고리 설정 후 병합 설정 (카테고리명 : wish)
flexsql/6-5/6-5%20FlexSQL_U.00_06_01_03.%EC%8A%A4%ED%8B%B8%20026.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_06_01_03.%EC%8A%A4%ED%8B%B8%20026.jpg)
7단계 : 디버거로 저장 결과 확인하기
-
시나리오 우측 상단의 화살표 (▶) 클릭하여 디버거 실행
flexsql/6-5/6-5%20FlexSQL_U.00_06_07_06.%EC%8A%A4%ED%8B%B8%20027.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_06_07_06.%EC%8A%A4%ED%8B%B8%20027.jpg)
3. 새로운 품목 정보를 입력 후 저장 버튼 클릭
flexsql/6-5/6-5%20FlexSQL_U.00_06_14_18.%EC%8A%A4%ED%8B%B8%20028.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_06_14_18.%EC%8A%A4%ED%8B%B8%20028.jpg)
4. 새로 저장된 데이터에 시퀀스 값이 정상적으로 반영되는지 확인
flexsql/6-5/6-5%20FlexSQL_U.00_06_18_00.%EC%8A%A4%ED%8B%B8%20029.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_06_18_00.%EC%8A%A4%ED%8B%B8%20029.jpg)
5. 방금 저장한 품목을 수정하고 수정 버튼 클릭
flexsql/6-5/6-5%20FlexSQL_U.00_06_29_19.%EC%8A%A4%ED%8B%B8%20030.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_06_29_19.%EC%8A%A4%ED%8B%B8%20030.jpg)
6. 우측 로그에서 보내는 데이터와 조건문에 시퀀스 값이 정상적으로 반영하는지 확인
flexsql/6-5/6-5%20FlexSQL_U.00_06_38_19.%EC%8A%A4%ED%8B%B8%20031.jpg?width=960&height=540&name=6-5%20FlexSQL_U.00_06_38_19.%EC%8A%A4%ED%8B%B8%20031.jpg)
다음 강의 : FlexSQL로 데이터 삭제하기
이번 글에서는 FlexSQL 서비스를 활용해 데이터를 수정하는 방법을 단계별로 살펴봤어요. 다음 강의에서는 저장된 데이터를 삭제하는 방법을 이어서 설명할 예정입니다. 데이터 저장부터 수정, 삭제까지 모두 다뤄보고 싶다면 다음 강의도 꼭 확인해 보세요!