У меня есть таблица вроде этого:я не могу обновить таблицу, которая имеет два уникальных ключей
DROP TABLE IF EXISTS `locations`;
CREATE TABLE IF NOT EXISTS `locations` (
`tenant_id` int(11) NOT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
`waypoint_id` int(11) NOT NULL,
`material` int(11),
`price` decimal(10,2) NOT NULL,
PRIMARY KEY (`tenant_id`,`id`),
UNIQUE KEY `id` (`id`),
UNIQUE KEY(`waypoint_id`, `material`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
Я бегу этот вопрос:
UPDATE locations
SET waypoint_id=23,
material=19,
price=22.22,
unit_id=1
WHERE tenant_id=3 AND id = 54;
Я получаю следующее сообщение об ошибке:
Duplicate entry '23-19' for key 'waypoint_id'
Я знаю, что у меня есть запись с этими идентификаторами уже, но потом, как я могу редактировать значения в этой строке, если она не позволяет мне изменить их?
Я не понимаю, почему я получаю эту ошибку, если я не пытаюсь вставить новую запись с этими идентификаторами 23-19, но я просто пытаюсь обновить эту запись. Как я могу это решить?
ПРИМЕЧАНИЕ
Я извиняюсь, я вставил неправильный запрос, я редактировал запрос с первым, который создает ошибку.
Извините, мне пришлось отредактировать мой пост. Я вставил неправильный запрос. В любом случае я использовал ваш запрос, и у меня была такая же проблема: pastie.org/private/p0v0kdwcuneepzs1h1tpna – VaTo
@ SaulOrtega: - См. Обновленный ответ. Похоже, ваша таблица уже имеет столбец waypoint_id как 23, а материал - 19. Поэтому, если вы попытаетесь обновить это значение до 23 и 19 соответственно, это приведет к ошибке, которую вы сейчас получаете. Поскольку вы сделали эти два столбца уникальными –
Да, у меня есть эта запись уже в моей таблице, и я знал об этом, но я хочу, чтобы отредактировать эту запись, чтобы не добавлять новую с этими идентификаторами. – VaTo