0
我已經挖通過SO問題,沒有解決我的具體問題...我已閱讀以下相關的線程:Here,無濟於事。MySQL在重複密鑰更新只插入,不更新
我有一個簡單的表數據如下:
|-----------------------------------------------------------------------------|
| id | contractor_id | section_id | page_id | modified | timestamp |
|-----------------------------------------------------------------------------|
這裏是create語句:
CREATE TABLE `reusable_page_modified` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`contractor_id` int(11) DEFAULT NULL,
`section_id` int(11) DEFAULT NULL,
`page_id` int(11) DEFAULT NULL,
`modified` int(1) NOT NULL DEFAULT '1',
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13844 DEFAULT CHARSET=utf8;
現在我有4行的分貝,現在,他們是(我因爲它們是自動生成的「看着辦關ID和時間戳):
|---------------------------------------------------------|
| contractor_id | section_id | page_id | modified |
###########################################################
| 1016 | 309 | 10303 | 0 |
|----------------------------------------------------------
| 1017 | 309 | 10303 | 1 |
|----------------------------------------------------------
| 1073 | 309 | 10303 | 1 |
|----------------------------------------------------------
| 240 | 309 | 10303 | 1 |
|----------------------------------------------------------
我專注於第一行,其中modified
設置爲0
。我想要做的是將其設置爲1
如果contractor_id
,section_id
和page_id
都存在。如果不是,請輸入一個新行。
這是我有:
INSERT INTO `reusable_page_modified`
(contractor_id, section_id, page_id, modified)
VALUES ('1016', '309', '10303', '1')
ON DUPLICATE KEY UPDATE
`section_id` = '309'
AND `page_id` = '10303'
AND `contractor_id` = '1016';
這將創建一個新的行。我想我不瞭解它的意圖。我已閱讀MySQL文檔Here仍然沒有幫助。我在這裏沒有看到什麼?
我知道我在想這件事有點不同比預期。現在我已經看到了'modified = 1'的意思。此外,約束條件也是有意義的......當你盯着某些東西太久時,就會覺得目光短淺!感謝您的輸入! – Zak