반응형
조건부 UPDATE MariaDB(MySQL)
코드:
UPDATE COMPANY SET id='21'
WHERE id='20';
오류:
SQL 예외:키 'primary'에 대한 중복된 항목 '21'
이 경우 기본 키 필드를 'id'라고 하는 다른 값으로 업데이트하려고 하는데, 값이 이미 존재하는 경우 위의 오류가 발생합니다.MariaDB 구문을 사용하여 오류가 발생하지 않도록 COMPANY 테이블에 'id'가 아직 존재하지 않는 경우 조건부 업데이트를 어떻게 수행해야 합니까?
참고: 아래와 같이 "중복 키 업데이트 시"를 사용하는 조건부 삽입을 말하는 것이 아닙니다.
INSERT INTO COMPANY(id,first,last,age)
VALUES('1','Tim','Jones','70')
ON DUPLICATE KEY UPDATE id='1';
다음을 사용할 수 있습니다.
UPDATE IGNORE COMPANY
SET id='21'
WHERE id = '20'
간단한 데모를 참조하십시오.
표에 이미 있는 값의 수를 셀 수 있습니다.
UPDATE COMPANY C CROSS JOIN
(SELECT COUNT(*) as cnt
FROM COMPANY
WHERE id = 21
) CC
SET c.id = 21
WHERE id = 20 AND cnt = 0;
참고: 대부분의 데이터베이스에서는NOT EXISTS
에서WHERE
그러나 MySQL/MariaDB는 업데이트 중인 테이블에 대한 참조를 지원하지 않습니다.
언급URL : https://stackoverflow.com/questions/60711418/conditional-update-mariadb-mysql
반응형
'bestsource' 카테고리의 다른 글
ConnectionString 속성이 초기화되지 않았습니다."를 수정하는 방법 (0) | 2023.08.07 |
---|---|
왜 ngOnInit가 두 번 호출됩니까? (0) | 2023.08.07 |
선택한 워크시트를 excel 파일에서 pdf로 파이썬으로 인쇄 (0) | 2023.08.07 |
npm WARN에서 더 이상 사용되지 않는 core-js@2.6.11: core-js@<3은 더 이상 유지 관리되지 않으며 문제의 수 때문에 사용하지 않는 것이 좋습니다. (0) | 2023.08.07 |
파일 형식과 확장자가 일치하지 않는 문제를 해결하는 방법은 무엇입니까? (0) | 2023.08.07 |