Есть таблица:
CREATE TABLE IF NOT EXISTS `TABLE_KITS_LOG` (
`FIELD_SERVER_ID` varchar(64) COLLATE utf8_unicode_ci,
`FIELD_PLAYER` varchar(64) COLLATE utf8_unicode_ci,
`FIELD_KIT_NAME` varchar(64) COLLATE utf8_unicode_ci,
`FIELD_TIMESTAMP` int NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Допустим в этой таблице есть запись.
INSERT INTO `TABLE_KITS_LOG` (FIELD_SERVER_ID,
FIELD_PLAYER,
FIELD_KIT_NAME,
FIELD_TIMESTAMP)
VALUES ("server_id",
"name",
"kit",
11111)
Как правильно сделать запрос на обновление записи выше? Подобную задачу я ранее решал с помощью ON DUPLICATE KEY UPDATE
но на данный момент у меня нет уникального ключа. Как можно решить данную задачу?
Запись будет обновляться по FIELD_SERVER_ID, FIELD_PLAYER, FIELD_KIT_NAME, а значение, которое будет обновляться FIELD_TIMESTAMP. Проблема в том, что я не знаю заранее, существует ли запись в бд или нет(для её обновления).
В описанных условиях решение одним запросом невозможно - все версии запросов с двойным типом действия (REPLACE, INSERT .. ODKU) требуют наличия уникального индекса.
Я бы решил задачу безусловным удалением записи и последующей вставкой новой записи. Т.е.
DELETE FROM `TABLE_KITS_LOG`
WHERE (FIELD_SERVER_ID, FIELD_PLAYER, FIELD_KIT_NAME)
IN ("server_id", "name", "kit");
INSERT INTO `TABLE_KITS_LOG` (FIELD_SERVER_ID,
FIELD_PLAYER,
FIELD_KIT_NAME,
FIELD_TIMESTAMP)
VALUES ("server_id",
"name",
"kit",
2222);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имеем такой код получения полей из таблицы в базе данных
Не могу понять, что такое BindingSourceЧерез адаптеры мы можем манипулировать данные