Предполагая, что у меня есть следующие 2 таблицы:MySQL - запись дальняя поездка
командировкам:
driverId (PK), dateTravelled, totalTravelDistance
farthest_trip (такой же структуры)
driverId (PK), dateTravelled, totalTravelDistance
где только самые последнее путешествие хранится:
REPLACE INTO JOURNEYS ('$driverId', '$totalTripDistance');
Я хочу сохранить самое дальнее путешествие путешествовал по каждому driverId, как хорошо, но, к сожалению, вы не можете иметь условие на качестве INSERT... ON DUPLICATE KEY UPDATE
заявления, иначе я бы триггер, такие как:
INSERT INTO farthest_trip(driverId, dateTravelled, totalTravelDistance) ON DUPLICATE KEY UPDATE dateTravelled = new.dateTravelled, totalTravelDistance = new.totalTravelDistance WHERE totalTravelDistance < new.totalTravelDistance;
, так что я делаю после вставки в первую таблицу, в PHP Я проверяю, находится ли текущее расстояние дальше, чем ранее записанное, и если да, то обновите farthest_journey. Похоже, что должен быть лучший способ, но я не могу это понять, так есть ли более эффективный способ сделать это?
Я не возражаю против волшебной части;) однако, мы не можем хранить все поездки, так как были миллионы, и б) обновление не сработало, потому что для первой поездки не будет записи в farthest_trip. – StackOverflowed
Вместо UPDATE в триггере используйте INSERT с предложением ON DUPLICATE KEY UPDATE. – Kickstart