PostgreSQL에서도 이런 기능이 있었는지는 모르겠다. 그런데 찾아보다 보니 데이터가 없으면 만들어주고 있으면 바꾸어주는 기능이 있다는 것을 알게 되었다. INSERT OR REPLACE INTO 이렇게 구현하는 것 같다. 블로그에 따라서는 REPLACE INTO 만을 언급하고 있는 것들도 있다.
그래서 이렇게 이용해 보았는데 REPLACE가 되지 않고 INSERT 만 계속 되고 있는 것을 알게 되었다. 다시 검색을 해보니 index가 없을 경우 이런 현상이 있다고 한다.

SQLite “INSERT OR REPLACE INTO” not working
I have to write a query in sqlite to update the record if it exists or insert it if the record do not already exists. I have looked the syntax of INSERT OR REPLACE INTO from here. But in my case, w…
그래서 다음과 같이 index를 생성해 준다. 여러 번 시행착오를 거친 결과 내가 원하는 형식으로 사용하려면 date와 name 을 이용한 index를 생성하여야 한다. price까지 이용하면, 당일 자료들이 중복되어 생성된다.
CREATE UNIQUE INDEX idx ON stock_trend(name, date);
index를 잘못 만들면, 삭제 후 다시 만들어 준다.
DROP INDEX [IF EXISTS] index_name;