방명록
- INSERT ON DUPLICATE KEY UPDATE2022년 02월 28일 16시 18분 45초에 업로드 된 글입니다.작성자: 원2728x90반응형
INSERT ... ON DUPLICATE KEY UPDATE 는 INSERT 문의 MariaDB/Mysql 확장문으로,
중복된 고유 키 또는 기본 키를 찾으면 INSERT 대신 UPDATE를 실행한다.
둘 이상의 고유 인덱스가 일치하면 첫 번째 인덱스만 업데이트 된다.
따라서 둘 이상의 고유 인덱스가 있는 테이블에서는 이 문을 사용하지 않는 것이 좋다.
예시
CREATE TABLE food (id INT PRIMARY KEY, menu VARCHAR(30)); INSERT INTO food VALUES (1,'라면'), (2,'쫄면'), (3,'밀면');
기존의 키가 없다면 명령문이 그냥 insert 로 실행된다.
INSERT INTO food VALUES (4,'김밥') ON DUPLICATE KEY UPDATE menu='김밥';
SELECT * FROM food;
위의 상태에서 그냥 inset 문을 입력하면?
INSERT INTO food VALUES (1,'냉면');
1번의 primary key가 존재한다고 실행되지 않는다.
그렇지만
아래처럼 입력하면 1번 키에 값이 입력이 된다.
INSERT INTO food VALUES (1,'소주') ON DUPLICATE KEY UPDATE menu='소주';
두개 이상의 행이 영향을 받을 때
유니크 키를 추가
ALTER TABLE food ADD id2 INT; UPDATE food SET id2=id+10; ALTER TABLE food ADD UNIQUE KEY(id2);
이 상태에서
INSERT INTO food VALUES (2,'맥주',13) ON DUPLICATE KEY UPDATE menu='맥주';
이런식으로 primary key 와 unique key가 해당되는 2개의 행이 영향을 받게 된다면
아래처럼 둘중에 하나의 컬럼만 영향을 받게 되니 주의하자.
그냥 두개의 행에 영향을 받게 하지 말자.
728x90반응형'DB > MariaDB' 카테고리의 다른 글
데이터 정규화 (0) 2024.03.22 IFNULL (0) 2022.02.17 데이터베이스 사용자 비밀번호 변경 & 권한 관리 (0) 2022.02.11 특정 DB 내에 존재하는 모든 컬럼 목록을 한번에 조회 (0) 2022.01.20 더미데이터 넣기 (0) 2021.11.12 BINARY (대소문자 구분) (0) 2021.11.12 다음글이 없습니다.이전글이 없습니다.댓글