[문제]
복수개를 선택하여 등록 버튼을 통해 INSERT와 UPDATE동시 실행
[고안]
1. 백단에서 MERGE INTO를 사용하여 바로 UPDATE와 INSERT를 실행하였으나, 기존의 값을 비교하는 과정이 없어 실패
2. 프론트단에서 기존의 값과 비교하여 같은 것과 없는 것을 나누어 각각의 파라미터를 만들고, axois를 두 개실행시켜 백단으로 넘겨주려고 했으나, 프론트단에서 파라미터를 나누는데 실패
[해결]
백단에서 SELECT문을 한번 거친 후에 UPDATE와 INSERT를 나누는 방법으로 해결
WITH TMP AS (
UPDATE
table_nm
SET
col1 = #{val1}
, col2 = #{val2}
WHERE -- ORACLE MERGE INTO에서의 ON조건
col3 = #{col3}
AND col4 = #{col4}
RETURNING *)
INSERT INTO
table_nm ( col1, col2, col3, col4, col5)
SELECT
#{val1}, #{val2}, #{col3}, #{col4}, CURRENT_TIMESTAMP
WHERE NOT EXISTS (SELECT * FROM TMP)
'Skill Tree🌲 > SQL' 카테고리의 다른 글
[postgresql] 행 중복해서 n번 뽑기, 구분자 없는 배열을 row로 변환 (0) | 2024.01.04 |
---|---|
[mssql] 랜덤한 숫자 insert into select (0) | 2023.10.31 |
SQL 활용 핵심요약 (0) | 2022.04.05 |