2010-06-09 2 views
2

내가 포스트 그레스를 사용하고 있는데 행 업데이트 할 때 나는 중복 키 오류를 받고 있어요 : 내가 행을 업데이트하면이 오류가 발생할 수 있습니다 방법을 이해하지 않습니다행을 업데이트 할 때 왜 중복 키 오류가 발생합니까?

cursor.execute("UPDATE jiveuser SET userenabled = 0 WHERE userid = %s" % str(userId)) 
psycopg2.IntegrityError: duplicate key value violates unique constraint "jiveuser_pk" 

을 ... 어떤 도움이 많이 주시면 감사합니다 .

답변

3

userenabled 열이 jiveuser_pk 기본 키에 참여하고 있음을 나타내는 것 같습니다. 제 생각 엔 useriduserenabled이 기본 키에 참여하고 이미 userid인데 userenabled은 0과 같습니다.

0

userenabled가 키의 일부이고 0으로 설정하면 동일한 값을 가진 다른 키와 충돌 할 수 있습니다.

간단한 키 충돌보다 가능성은 낮지 만 트리거가 여기에있을 수도 있습니다.

전적으로 대답하기를 원한다면 기본 키가 무엇인지 알아야합니다.

0

알아야 할 기본 키의 구성 요소를 알아야합니다. 명령 줄에서 \d jiveuser_pk을 실행 해보십시오. 그 테이블에있는 PK가 (userid, userenabled)이거나 업데이트 후에 실행되는 트리거가있는 것 같습니다.

1

트리거. DBA가보고 있지 않을 때 DBA가 무엇을했는지 알아 내고, 실행을 촉발 시키며, 아무런 일도 일어나지 않는 모든 종류의 무작위 작업을 수행하고, IT 부서에서 중복 오류를 생성하고 트랜잭션을 실패하게 만들었습니다.

관련 문제