私は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行を持っている、と彼らは私が
|---------------------------------------------------------|
| contractor_id | section_id | page_id | modified |
###########################################################
| 1016 | 309 | 10303 | 0 |
|----------------------------------------------------------
| 1017 | 309 | 10303 | 1 |
|----------------------------------------------------------
| 1073 | 309 | 10303 | 1 |
|----------------------------------------------------------
| 240 | 309 | 10303 | 1 |
|----------------------------------------------------------
私は012の最初の行に集中していますは0
に設定されています。私がしたいことは、contractor_id
、section_id
、およびpage_id
がすべて存在する場合、1
に設定します。そうでない場合は、新しい行を入力します。
これは私が持っているものです。
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';
これは、新しい行を作成します。私は、それが意図された通りにON DUPLICATE KEY UPDATE
の文を理解していないと思う。私はMySQLのマニュアルHereを読んだことがあります。私はここで何が見えないのですか?
私は少し違った意図よりも、それについて考えていた知っていました。 'modified = 1'は、今見ていると意味があります。また、拘束も意味をなさない...あなたが何かをあまりにも凝視しているときに、短い視力を得ることを憎む!あなたのご意見ありがとうございます! – Zak