Дублированный контент - PullRequest
0 голосов
/ 22 декабря 2010

Я хочу обновить таблицу SQL, содержимое которой столбец ID + уже существует.

Проблема в том, что когда я хочу сделать вставку, мне выдается сообщение об ошибке:

**#1062 - Duplicate entry '35' for key 1**

Итак, я пытаюсь сделать ОБНОВЛЕНИЕ, но оно тоже не работает, потому что синтаксис неверен, форма моего запроса SQL:

INSERT INTO `liens_series` 
(`id`, `id_series`, `password`) 
VALUES (35, '12', 
'<br>Saison 3 en cours de production'), .... 

Список слишком длинный.

Ответы [ 4 ]

1 голос
/ 22 декабря 2010

Возможно, вы захотите изучить предложение ON DUPLICATE KEY UPDATE оператора INSERT в MySQL.Вкратце, ваше утверждение может быть изменено на

INSERT INTO `liens_series`
  (`id`, `id_series`, `password`)
VALUES
  (35, '12',  '<br>Saison 3 en cours de production')
ON DUPLICATE KEY UPDATE `id_series` = '12',
                        `password` = '<br>Saison 3 en cours de production')

Поделитесь и наслаждайтесь.

0 голосов
/ 22 декабря 2010

Если вставить новую строку, идентификатор которой еще не определен:

INSERT INTO `liens_series` (`id`, `id_series`, `password`) VALUES (NULL, '12', '<br>Saison 3 en cours de production');

или

INSERT INTO `liens_series` (`id_series`, `password`) VALUES ('12', '<br>Saison 3 en cours de production');

Новый идентификатор будет возвращен в LAST_INSERT_ID() (MySQL) или mysql_insert_id() (C, PHP и т. д.).

0 голосов
/ 22 декабря 2010

Если вы хотите вставить строку и обновить ее содержимое, если оно уже существует, используйте REPLACE INTO:

REPLACE INTO `liens_series` (`id`, `id_series`, `password`) VALUES (35, '12', '<br>Saison 3 en cours de production');

Обратите внимание, что за кулисами строка с идентификатором 35 будет удалена (еслион существует), а затем выдан INSERT.Таким образом, вы не можете обновить строку только частично, и количество затронутых строк отражает неявное количество DELETES + количество INSERTS.

0 голосов
/ 22 декабря 2010

Используйте это: http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html Он будет делать то, что вы хотите, вставить или обновить, если необходимо.

...