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