LINUX.ORG.RU

[java][mysql] update or insert if not exists

 ,


0

1

Здравствуйте!
Подскажите, пожалуйста, как лучше всего сделать следующее:
Программа собирает некоторые данные (статистика). Периодически требуется сливать собранные данные в базу. При этом к данным прикрепляется timestamp (равный кол-ву миллисекунд от 01.01.1970 до начала текущего дня). Требуется, чтобы было так: если в таблице уже существует запись с данным id и с данным timestamp'ом, то просто Добавляем значения к уже имеющимся. Если же такой записи нету, тогда создаем новую.
Гугл выдает множество разных способов (IF EXISTS ... UPDATE ... ELSE INSERT ...; UPDATE ... IF @@ROWCOUNT=0 INSERT; и др.), как все-таки лучше всего это сделать (с учетом нагрузки на базу)?

★★★★★

сделай абы как, но чтоб работало, а когда упрешься в производительность, тогда и думай. это делают все — не стесняйся этого :)

Pi ★★★★★
()
Ответ на: комментарий от Tark

>INSERT ... ON DUPLICATE KEY UPDATE?
Это по primary key? А мне по другим полям надо проверять.

сделай абы как, но чтоб работало, а когда упрешься в производительность, тогда и думай. это делают все — не стесняйся этого :)

Да у меня и так все уже абы как, хочется хоть чего-нибудь нормально сделать )))
И вообще, хотелось бы самый простой способ найти.

kovrik ★★★★★
() автор топика
Ответ на: комментарий от kovrik

>Это по primary key?

И по unique в том числе. В том числе и по составному unique.

Wizard_ ★★★★★
()
Ответ на: комментарий от Tark

Что-то я туплю. Как там указать, чтобы он проверял не по primary key, а по нескольким другим полям?

kovrik ★★★★★
() автор топика
Ответ на: комментарий от Tark

Если я правильно понял, то unique index'ом мы просто отмечаем поля, которые должны быть уникальны? У меня же уникальной должна быть совокупность полей.

kovrik ★★★★★
() автор топика
Ответ на: комментарий от kovrik

Просто создайте unique индекс составной по нескольким полям. Вот пример:
CREATE UNIQUE INDEX название_индекса ON таблица (`поле_1`, `поле_2`);

Tark ★★
()
Ответ на: комментарий от Tark

Большое спасибо, вроде все работает!

kovrik ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.