bestsource

조건부 UPDATE MariaDB(MySQL)

bestsource 2023. 8. 7. 22:46
반응형

조건부 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

반응형