SQL Trigger отмена пакетная вставкаJAVA

Программисты JAVA общаются здесь
Anonymous
SQL Trigger отмена пакетная вставка

Сообщение Anonymous »

В моей базе данных я 2 таблицы: < /p>
  • , в котором хранится копия списков автомобилей из Dass Sessions Damples of Assetto Corsa (Game) серверов
  • , которые используют пары username/weam guid от каждого автомобиля внутри j_cars , чтобы сделать менее тяжелую таблицу для запроса ( довольно большой)
Используя Java, я извлекаю автомобили из файлов JSON, а затем вставляю их в мою базу данных в таблице 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;
Я использую MariaDB 10.4.32


Подробнее здесь: https://stackoverflow.com/questions/796 ... tch-insert

Вернуться в «JAVA»