반응형
일부 행을 업데이트하는 동안 고유 키 무시(mariaDB)
다음 테이블(mariaDB)이 있습니다.
+----+--------------+-------------+-------------+
| id | content_type | sort_number | document_id |
+----+--------------+-------------+-------------+
| 1 | text | 1 | 1 |
| 2 | table | 2 | 1 |
| 3 | text | 3 | 1 |
| 4 | image | 4 | 1 |
+----+--------------+-------------+-------------+
의 조합sort_number
그리고.document_id
고유합니다.
이제 위치 2에 새 항목을 추가하려면 다음 항목을 증분해야 합니다.sort_number
모든 출품작 중에서sort_number >= 2
한 걸음 한 걸음
이를 위해 다음 쿼리를 사용합니다.
update `table_name` set `sort_number` = sort_number +1 where `sort_number` > ? and `document_id` = ?
하지만 독특한 열쇠 때문에 (sort_number
그리고.document_id
) 오류가 발생했습니다.
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '3' for key 'table_name_sort_number_document_id_unique'
나는 그 오류를 피하기 위해 지쳤습니다.SET unique_checks=0;
하지만 여전히 오류가...
(더 나은) 업데이트 방법이 있습니까?sort_number
하나의 질문에?
ORDER BY는 업데이트 쿼리에도 적용되므로 간단하게 다음을 수행할 수 있습니다.
SET @i:=0;
UPDATE items SET disp_order=@i:=@i+1 ORDER BY item_name;
마지막 행부터 업데이트를 시작하고 뒤로 이동하기만 하면 됩니다.
폴 슈피겔이 제공한 솔루션이 마음에 듭니다.내 쿼리는 다음과 같이 표시됩니다.
update `table_name` set `sort_number` = sort_number +1 where `sort_number` > ? and `document_id` = ? order by `sort_number` desc
업데이트 무시가 정답입니다.
UPDATE IGNORE `table_name` set `sort_number` = sort_number +1 where `sort_number` > ? and `document_id` = ?
언급URL : https://stackoverflow.com/questions/51658105/ignore-unique-key-while-updating-some-rows-mariadb
반응형
'sourcecode' 카테고리의 다른 글
사전을 사용하여 matplotlib를 사용하여 막대 그림 그리기 (0) | 2023.07.22 |
---|---|
조건이 충족되는 경우 Numpy 요소 교체 (0) | 2023.07.22 |
스프링 부트의 다중 변환 서비스 (0) | 2023.07.22 |
C에서 인쇄 매크로 디버그? (0) | 2023.07.22 |
C#에서 파이썬 스크립트를 실행하려면 어떻게 해야 합니까? (0) | 2023.07.17 |