간단한 게시판을 만들던 중에 문득 수정과 등록 부분 Controller를 각각 만들어서 사용하는 것이 비효율적이라고 느꼈고 글을 저장한다는 관점에서 본다면 하나로 볼 수 있지 않을까 생각이 들었다.
그래서 생각한 점이 boardId 같이 pk키가 있으니 값이 없다면 새 글로 등록, 값이 이미 있다면 수정으로 하면 되지 않을까 생각이 들어 한번 찾아보기 시작.
결과는 역시나 있었다. ORACLE은 merge into , mySQL은 on duplicate key
중복된 키가 있나 한번 확인하는 작업을 거치기 때문에 이미 값이 있는데 중복으로 들어갈 확률을 막아준다.
INSERT INTO 테이블(
컬럼명 1,
컬럼명 2,
) VALUES (
'값 1',
'값 2'
)
ON DUPLICATE KEY UPDATE
컬럼명 = '값';
MERGE INTO 테이블
USING DUAL -----------------> 다른 테이블에서 비교 X , 현재 테이블 직접 입력
ON (컬럼명 = ${파라미터값})
WHEN MATCHED THEN
UPDATE SET 컬럼명 = 값
WHEN NOT MATCHED THEN
INSERT (컬럼명 1, 컬럼명2, 컬럼명3)
VALUES ('값',값,값)
https://offbyone.tistory.com/253
https://sdevstudy.tistory.com/12