- , в котором хранится копия списков автомобилей из Dass Sessions Damples of Assetto Corsa (Game) серверов
Код: Выделить всё
j_cars - , которые используют пары username/weam guid от каждого автомобиля внутри j_cars , чтобы сделать менее тяжелую таблицу для запроса (
Код: Выделить всё
driversдовольно большой)Код: Выделить всё
j_cars
String sql = "INSERT INTO j_cars (idSession, car_id, driver_guid, driver_name, ...) VALUES (?, ?, ?, ?, ...)";
try (PreparedStatement p = conn.prepareStatement(sql)) {
for (Car car : cars) {
p.setInt(1, sessionId);
p.setInt(2, car.CarId);
p.setLong(3, car.Driver.Guid);
p.setString(4, car.Driver.Name);
...
p.addBatch();
}
p.executeBatch();
}
Хотя это работает отлично, если я попытаюсь добавить триггер здесь ниже, вставки на j_cars работают только в том случае, если пара пользователя/guid уже не существует в таблице драйверов . Если это так, вставка в j_cars отбрасывается.
Код: Выделить всё
CREATE DEFINER=`root`@`localhost` TRIGGER `trg__j_cars__before_insert`
AFTER INSERT ON `j_cars`
FOR EACH ROW
BEGIN
INSERT IGNORE INTO `drivers` (`guid`, `username`)
VALUES (NEW.`driver_guid`, NEW.`driver_name`);
END
< /code>
Разве моя вставка игнорирует предотвратить эту отмену?IF NOT EXISTS (
SELECT 1 FROM `drivers` WHERE `guid` = NEW.`driver_guid`
) THEN
INSERT IGNORE INTO `drivers` (`guid`, `username`)
VALUES (NEW.`driver_guid`, NEW.`driver_name`);
END IF;
Подробнее здесь: https://stackoverflow.com/questions/796 ... tch-insert