PostgreSQL 5

[PostgreSQL] Insert 쿼리에서 Serial 컬럼 값 삽입하기

일반적으로 Auto Increment column일 경우 컬럼값이 자동증가하게 되는데 Insert query를 활용하려고 할 때 귀찮아지는 경우가 있다. INSERT INTO tmptable(column1, column2, ....) values(value1, value2, ...); 이런 귀찮은 상황을 모면하게 해 줄 방법 중 신박한 방법을 알게 되어 포스팅으로 기록하려고 한다. 아래와 같이 해주면 되는건 알고있었지만, INSERT INTO problem VALUES ( nextval('problem_id_seq'), 'Hello World', 'unknown', '/var/www/files/problems/' || lastval(), 'Python' ); 이는 sequance 명을 넣어주어야 해서 이..

기술공부/DB 2023.08.22

[PostgreSQL] 부분 인덱스로 유일성 체크하기

요즘은 웬만하면 ChatGPT가 알려주는 시대라고는 하지만, 그렇다고 곧이 곧대로 말을 들었다가는 낭패를 볼 수 있다. 최근 DB 작업 중에 아래와 같은 케이스가 있었는데, 이걸 코드단이 아니라 DB단에서 해결하고 싶어졌었다. 유저는 item type이 0인 상품은 중복으로 가질 수 있다. 단 item type이 1인 경우에는 단 한 개의 상품만 소유할 수 있으며, 만약 type이 1인 item이 이미 있을 경우에는 새 것으로 교환만 가능하다. 그러니까 item_type이 0이면 insert 허용, 1이면 update를 해야하는 상황. Partial Index 사용법 유일성 체크는 DB에서 하면 되지 않나? 싶어서 혼자 끙끙대다가 PostgreSQL에서 버전 11 이후부터는 ON CONFLICT 절에서도..

카테고리 없음 2023.04.12

[PostgreSQL] SQLite로의 Migration 기록(1)

왠지 포스팅이 길어질 것 같아서 제목에 번호를 먼저 매겨버렸다. 이기종 DB간에 Migration이 쉽지 않다는 것은 숱하게 들었던 얘기이다. 그래서 되도록이면 안하고 싶었지만... 그러나 이번에 기존에 사용중이던 Cloud 서버를 정리하고 vm자체를 통채로 사내 Server로 옮겨오는 대공사를 마친 후 결과적으로 온프레미스 방식으로 운영방식을 전환하게 되면서, 내부사정으로 인해 데이터베이스 또한 File 기반으로 교체하는 것으로 결정이 내려졌다. 그래서 비교적 가벼운 SQLite로의 Migration을 시도하게 되었고, 그 과정을 여기에 정리해보려 한다. 그 전에 가장 먼저 고려해야할 사항이 있었다. SQLite는 Stored Procedure를 지원하는가? 아무리 구글링 해봐도 답은 No였다. 정식으..

기술공부/DB 2022.03.24

[PostgreSQL] 1. DB 최적화 - Index에 대해 조금 더 알아보자.(1)

데이터베이스를 다뤄본 사람이라면 인덱스라는 용어를 한번쯤은 들어봤을것이다. 쿼리를 계속 다루다보면 자연스럽게 인덱스라는 개념을 접하게 되는 것 같다. 내가 처음 인덱스를 접한건 대학교시절 실습 때 하나의 Query set을 돌려보면서였는데, 쿼리를 자세히 살펴보니 Create table 뒤에 Index를 설정하는 쿼리가 따라붙어있었다. 이게 뭔 역할을 하는건지는 모르겠지만 테이블 설정을 위해서 꼭 필요한건가보다, 하고 넘어갔던 것 같다. 지금은 Index가 뭐고, 왜 설정해야 하는지는 알지만 내가 과연 그래서 적절히 잘 활용하고 있는가?에 대한 질문을 스스로에게 해보게 된다. 그래서 간단하게 인덱스의 정의 및 필요한 시점, 현재 내가 조금 더 집중해야 하는 부분이 어떤 파트인지를 정리해보고자 한다. 인덱..

기술공부/DB 2022.03.21
728x90
반응형