0
저는 Postgres 9.6을 사용하고 있습니다. 레코드를 갱신하고 싶은 경우는 에 대해서는가 다릅니다 만, 같지 않으면 그대로 둡니다. 나는 정확히 같은 값, 나는 두 개의 레코드에서 얻을으로 두 번 실행하는 경우, 그러나Postgres UPSERT - 모든 데이터가 동일하면 업데이트하지 않습니까?
query = "INSERT INTO cap(scheme, year, code) "
query += "VALUES(%s, %s, %s) "
query += "ON CONFLICT DO NOTHING"
cursor.execute(query, ('abc', 2015, 'twu'))
:
이
은 (psycopg2를 통해 실행) 약간 내 테이블이 실제로 더 많은 필드를 가지고 있기 때문에 간단하게 내 SQL입니다 데이터베이스정확히 같은 값을 제공해도 새 레코드가 생성되지 않도록 어떻게이 쿼리를 수정할 수 있습니까?
나는 ON CONFLICT UPDATE documentation을 읽으려고했지만 내 경우에 맞게 조정하는 방법을 모르겠습니다. 특히 DO NOTHING
은 행을 삽입하면 안됩니다. (: "NO CONVERICT ON NOTHING은 단순히 행을 대체 액션으로 삽입하지 않습니다") 행을 삽입하지만 새로운 행을 삽입합니다.
해당 테이블에 대해 기본 또는 고유 키가 정의되어 있습니까? 귀하의 질문을 편집하고'cap '테이블에 대한 완전한 create table 명령문을 추가하십시오 (모든 인덱스 포함) –