요즘은 웬만하면 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 절에서도..