ON DUPLICATE KEY UPDATE работает не правильно

155
17 апреля 2018, 04:50

Есть MySQL версии 5.7.

Есть таблица:

CREATE TABLE IF NOT EXISTS `table` (
  `id`            INT UNSIGNED  NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `name`          TEXT      NOT NULL,
  `description`   TEXT      NOT NULL,
  `login`         TEXT      NOT NULL,
  `password`      TEXT      NOT NULL,
  `old_passwords` TEXT      NOT NULL,
  `last_update`   TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `created`       TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

Есть запрос с обновлением в случае совпадения:

INSERT INTO `table` (name, description, login, password, old_passwords, last_update, created)
VALUES ("name", "description", "login", "pass", "oldPasswords", CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
ON DUPLICATE KEY UPDATE name = "n", description = "d", login = "l", password = "p", old_passwords = "oldp", last_update = CURRENT_TIMESTAMP;

Вопрос, а чего он не работает то? Почему каждый раз создаётся новая запись и не обновляется старая, как это исправить?

UPDATE:

CREATE TABLE IF NOT EXISTS `table` (
  `id`            INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `name`          TEXT         NOT NULL,
  `description`   TEXT         NOT NULL,
  `login`         TEXT         NOT NULL,
  `password`      TEXT         NOT NULL,
  `old_passwords` TEXT         NOT NULL,
  `last_update`   TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `created`       TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
  UNIQUE (id)
);
INSERT INTO `table` (id, name, description, login, password, old_passwords, last_update, created)
VALUES (?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
ON DUPLICATE KEY UPDATE
  name          = ?,
  description   = ?,
  login         = ?,
  password      = ?,
  old_passwords = ?,
  last_update   = CURRENT_TIMESTAMP;

Вот так как бы работает.

READ ALSO
Как вывести строку матрицы где есть максимальный элемент определенного столбца?

Как вывести строку матрицы где есть максимальный элемент определенного столбца?

Пользователь вводит номер столбца в котором ищется максимальный элемент:

170
K массивов, порядка m×n

K массивов, порядка m×n

Здравствуйте, скажите пожалуйста, как обращаться к элементу массива - матрице номер k размером m×n, например? к 3 элементу, 5 строки, 2 матрицы?...

178
Вызов перегруженного индексатора

Вызов перегруженного индексатора

Итак, у меня есть класс-родитель:

163
Ошибка “Undefined reference to” подключённой (!) функции

Ошибка “Undefined reference to” подключённой (!) функции

В общем, создал заголовочный иcpp файлы

169