我的MySQL表這樣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;
可以說,表
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;
SQL查詢10
它應該更新第二行與數據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
但我不能解決這個問題。 而且我認爲在innodb引擎中,member_id和doc_id被引用到另一個表的主鍵,它們是唯一的。在innodb中,我無法創建獨特的索引。
任何幫助將不勝感激。提前致謝。
「狀態」可以是其他任何東西比1還是0?如果不是,那麼你的WHERE條件是多餘的。 – Strawberry
重複鍵更新只適用於在表 –