반응형
마리아DB 삽입 위치...선택...0 행에 영향을 주는 중복 키 업데이트 켜기
마리아에 다음 테이블을 만들었습니다.DB
테이블 작성
CREATE TABLE `email_templates_pending` (
`template_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`template_name` varchar(100) NOT NULL,
`template_data` text,
`modify_type` varchar(16) NOT NULL,
`modify_by` varchar(50) NOT NULL,
`modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`template_id`),
UNIQUE KEY `template_name` (`template_name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
그리고 그 테이블에 행을 삽입하고template_id = 1
아래를 사용하여 행을 업데이트하고 싶었습니다.INSERT INTO...SELECT...ON DUPLICATE KEY UPDATE
아래 명세서
SQL 문
INSERT INTO email_templates_pending
(template_id, template_name, template_data, modify_by, modify_type)
SELECT template_id, template_name, template_data, 'test@test.com', 'Deleted'
FROM email_templates WHERE template_id= '1'
ON DUPLICATE KEY UPDATE modify_type='Deleted'
단, 명령어를 실행하면 정상적으로 반환되지만0 rows affected
다른 컬럼 이름을 가진 다른 유사한 테이블이 있습니다.template_id가 프라이머리 키임을 확인했습니다만, 다른 문제는 없는지 잘 모르겠습니다.
email_templates_pending에 행이 1개 있지만 email_templates에는 행이 없습니다.
이것이 0 행이 영향을 받은 이유일 수 있습니다.소스 테이블에 행이 없습니다.
INSERT INTO email_templates_pending ...
SELECT ... FROM email_templates
ID = 1에 대해 업데이트하려는 경우 다음을 사용할 수 있습니다.
INSERT INTO email_templates_pending (template_id, template_name, template_data, modify_by, modify_type)
SELECT template_id, template_name, template_data, 'test@test.com', 'Deleted' FROM email_templates_pending
ON DUPLICATE KEY UPDATE modify_type='Deleted';
UPDATE만 수행해야 하는 경우 직접 UPDATE 문을 사용할 수도 있습니다.
UPDATE email_templates_pending SET modify_type='Deleted' WHERE template_id= '1';
id#1이 존재하고 이미 "Deleted"로 표시되어 있으면 "Deleted"로 올바르게 표시됩니다.
이것이 해당되지 않음을 증명하기 위해 다음 출력 결과를 보겠습니다.
SELECT template_id, template_name, template_data, modify_by, modify_type
FROM email_templates WHERE template_id= '1' ;
언급URL : https://stackoverflow.com/questions/35908841/mariadb-insert-into-select-on-duplicate-key-update-affecting-0-rows
반응형
'programing' 카테고리의 다른 글
bootstrap-vue 테이블이 데이터베이스 데이터로 채워지지 않음 (0) | 2023.01.13 |
---|---|
Maria에서 lower_case_table_names 변수 변경DB (0) | 2023.01.13 |
PyTorch가 GPU를 사용하고 있는지 어떻게 확인합니까? (0) | 2023.01.13 |
PHP에서 두 좌표 사이의 거리 측정 (0) | 2023.01.13 |
'mariadb 다운로드 중'에서 도커 빌드에 실패했습니다. (0) | 2023.01.13 |