태그

2022년 7월 7일 목요일

Django update_or_create 사용 시 주의 - 데이터 중복발생 가능성

 

update_or_create() 를 사용해서 편리하게 데이터가 있으면 업데이트, 없으면 생성하고있었는데...


 raise self.model.MultipleObjectsReturned(

ehr.models.AnnualLeaveDetail.MultipleObjectsReturned: get() returned more than one AnnualLeaveDetail -- it returned 2!


확인해보니,

get_or_create() 가 DB레벨의 Unique는 보장하지 않는다.


As described above in get_or_create(), this method is prone to a race-condition which can result in multiple rows being inserted simultaneously if uniqueness is not enforced at the database level.

참조:

https://docs.djangoproject.com/en/4.0/ref/models/querysets/#update-or-create



But, In my case,

구 버전의 일부 IE에서 중복으로 AJAX 를 던지는 문제로 '추측'하고있다.

댓글 없음:

댓글 쓰기