본문 바로가기
  • 개발 로그를 기록하며,
    복습하고 깊이를 더해갑니다.
728x90

Update3

[PostgreSQL] 삽입..이미 있다면? 업데이트 (with. upsert) 데이터를 삽입하는데 충돌이 발생하면 충돌한 기존 데이터를 업데이트 하자 💡 UPSERT 란?UPSERT 는 [Insert + Update]의 합성어로, 고유 키나 제약 조건을 기준으로 기존 레코드의 존재 여부를 판단하여 존재하면 UPDATE, 존재하지 않으면 INSERT를 수행하는 복합 연산이다. 주로 사용되는 대부분의 DBMS(MySQL, Oracle, PostgreSQL, Mongo..)에서 고유 문법에 따라 UPSERT를 지원하고 있으며, 실제로도 많이 사용되고 있다. 하지만 SQL 표준 문법은 아니고, 비슷한 기능의 표준 문법으로 Orcle, SQL Server 등에서 MERGE를 지원하고 있다.MERGE는 상대적으로 복잡한 조건의 병합 처리에 유리하고, UPSERT는 충돌 시 단순 삽입/수정 .. 2025. 3. 14.
[SQL] SQL Cookbook - 04.삽입, 갱신, 삭제 1. 새로운 레코드 삽입하기모든 열을 추가할 때는 열 목록을 생략할 수 있다.# 단일 행 삽입insert into dept (deptno, dname, loc) values (50, 'PROGRAMING', 'BALTIMORE') # 여러 행 삽입insert into dept (deptno, dname, loc) values (1, 'A', 'B'), (2, 'B', 'C') 2. 기본값 삽입하기default를 명시한 열은 insert시 값을 지정하지 않으면 디폴트 값으로 저장된다.# defaultcreate table D (id integer default 0, foo varchar(10))insert into D (name) values ('Bar') 3. null로 기본값 오버라이딩하기defa.. 2023. 9. 18.
[JPA] 주요 개념 트랜잭션(Transaction) 데이터베이스를 다룰 때 트랜잭션을 적용하면 데이터 추가, 갱신, 삭제 등으로 이루어진 작업을 처리하던 중 오류가 발생했을 때 모든 작업들을 원상태로 되돌릴 수 있다. 모든 작업들이 성공해야만 최종적으로 데이터베이스에 반영하도록 한다. 즉 데이터를 추가, 수정, 삭제 시킬 때 바로 DB에 반영 하지 않고 영속성 캐시에 담아뒀다 한번에 반영 하게 된다. UPDATE JPA는 Update 메서드를 따로 제공하고 있지 않다. 그렇기에 Service로직에 @Transactional 어노테이션을 붙이고, Entity데이터를 조회 후 set() 하여 Entity의 데이터를 수정만 하면 데이터베이스에 대한 연산?작업이 끝날 때 @Transactional 어노테이션에 의해 Entity의 .. 2023. 9. 10.
728x90