내가 가진이MySQL을 삽입 그렇지 않으면 업데이트
CREATE TABLE IF NOT EXISTS tbl_member_doc_read (
`read_id` INTEGER(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT ,
`member_id` INTEGER(10) UNSIGNED NOT NULL ,
`doc_id` INTEGER(10) UNSIGNED NOT NULL ,
`status` INTEGER(1) DEFAULT '0',
FOREIGN KEY (`member_id`) REFERENCES tbl_member(`member_id`),
FOREIGN KEY (`doc_id`) REFERENCES tbl_doc(`doc_id`)
) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
같은 MySQL의 테이블은 말할 수
read_id member_id doc_id status
1 1 1 1
2 1 2 0
3 2 2 1
가 지금은 결합 할 경우 해당 테이블에 삽입 할 테이블 예를 들어, 데이터 ID 또는 쌍 (member_id, doc_id)이 존재합니다. 상태가 0 인 경우 업데이트 상태입니다. 여기에 사용 된 쿼리는
입니다.INSERT INTO tbl_member_doc_read (member_id, doc_id, status) VALUES(1,2,1) ON DUPLICATE KEY UPDATE status = VALUES(status) WHERE status = 0;
는 데이터 2 1 2 1
난이
INSERT INTO tbl_member_doc_read (member_id, doc_id, status) VALUES(2,1,0) ON DUPLICATE KEY UPDATE status = VALUES(status) WHERE status = 0;
을 삽입하는 경우는 데이터 4 2 1 0
가진 새로운 행을 삽입한다과 제 2 열을 갱신해야하지만 못해 이것을 해결하십시오. 또한 innodb 엔진에서는 member_id로 생각하고 doc_id는 다른 테이블의 기본 키를 참조하여 고유합니다. innodb에서는 고유 인덱스를 만들 수 없습니다.
도움이 될 것입니다. 미리 감사드립니다. , 당신은 두 개의 열을 unique
키를 정의하는 데 필요한 ON DUPLICATE KEY UPDATE
문을 작동하기 위해
'상태'가 다른 것일 수 있습니까? 1 또는 0보다? 그렇지 않으면 WHERE 조건이 중복됩니다. – Strawberry
이중화 키 업데이트는 테이블 –