-
MyBatis - SelectKey 활용하기DB/MyBatis 2023. 11. 8. 14:13
# SelectKey 란? Insert, Update, Delete 전, 후 SELECT가 필요한 경우에 사용하는 MyBatis 문법 # 사용법 UPDATE TBM_EVENT_DTL SET PARTICIPATION_CNT = PARTICIPATION_CNT + 1 WHERE 1=1 AND CP_CD = #{cpCd} AND EVENT_CD = #{eventCd} AND USE_YN = 'Y' AND DEL_YN = 'N' SELECT A.PARTICIPATION_CNT ,A.TOTAL_PART_LIMIT_CNT FROM TBM_EVENT_DTL AS A WHERE 1=1 AND A.CP_CD = #{cpCd} AND A.EVENT_CD = #{eventCd} AND A.USE_YN = 'Y' AND A...
-
[재귀쿼리] 실무에서 많이 쓰일 수 있는 쿼리DB/쿼리 2023. 10. 22. 18:55
재귀 쿼리가 필요한 이유? 실무에서 쿼리를 작성하다 보면, 해당 테이블에 데이터가 없는데 인위적으로 나오게 만드는 경우(데이터가 없으므로 로우에 아무것도 안나오겠지만 null이라는 결과값이 나와야하는 경우) 또는 특정 일자를 기준으로 일주일치 또는 한달치의 row를 출력해야 하는 경우에 활용할 수 있다. 예시) 네이버 지도의 아래와 같은 경우에 사용 가능 환경 oracle, MS-Sql, Tibero와 같이 DB마다 약간 상이하거나 같을 수는 있지만 적어도 대부분의 RDBMS에서는 활용할 수 있다. 구현1 my sql 기준으로 작성 7개의 로우를 인위적으로 생성하는 쿼리 WITH RECURSIVE T1 as ( SELECT 1 as LV UNION ALL SELECT LV + 1 FROM T1 WHERE..
-
shared lock와 exclusive lock의 차이점 및 활용DB 2023. 10. 22. 18:07
Shared Lock이란? 하나의 트랜잭션이 같은 데이터를 읽을 때 읽기는 허용하지만 수정은 불가 Read Lock이라고도 불리며, 데이터를 읽기 위해서만 사용된다. 읽기 요청 중에 레코드가 업데이트되는 중이 아닌지 확인합니다. (데이터의 무결성 지원) 모든 종류의 Update로 부터 안전하다. Lock-S로 표시할 수 있다. Lock-S 명령어를 통해 사용할 수 있다. 예시 두 개의 트랜잭션 1,2가 존재. 트랜잭션1의 작업 내용 : A값을 200으로 변경 트랜잭션2의 작업 내용 : A를 읽는 작업 수행 트랜잭션 1,2가 동시에 발생하는 상황에서 Shared Lock이 없다면 트랜잭션 2는 A를 '100'이라는 잘못된 값으로 읽음 반대로, Shared Lock이 있다면 트랜잭션 1은 트랜잭션 2가 읽기..
-
[ORACLE] PIVOT 함수 사용법DB 2023. 10. 22. 11:53
PIVOT을 이용하려면 집계함수를 이용해야한다. 집계함수가 아닌 해당 값을 가져와야 하는 경우는 아래처럼 MAX 함수를 이용하면 된다. 또한 Alias를 활용하여 VO객체의 필드부분과 변수명을 통일시켜 매핑을 동적으로 할당해줄 수 있다. SELECT * FROM ( SELECT A.PLANT_CD ,A.LINE_CD ,A.PROC_CD ,A.DEVICE_CD ,A.ITEM_CD ,A.PD_BARCODE ,A.PROD_WORK_DT ,A.PROD_WORK_RESULT ,A.PROD_WORK_VALUE ,A.REG_ID ,B.INSP_RESULT FROM QM.PROD_QUALITY_HI A LEFT OUTER JOIN QM.FINAL_INSP_HI B ON B.PLANT_CD = A.PLANT_CD AND..