Нужна ли проверка на наличие записи при добавлении новых в MySQL?

Имеются таблицы systems, coords с уникальным полем id. Часто бывают запросы на добавление записи с уже имеющимся id, пока проверки нету то бд сама проверит и вернет исключение, вопрос в том что нужно ли дописывать проверку на наличие id или все оставить на реализацию в самой бд. По сути выполним свою проверку, но бд потом выполнит свою все равно и думаю какое то влияние на загруженность да будет.

Немного пояснений: данные берутся с апи и добавляются в таблицу если их нет.

Как выглядит обработчик данных

void EdsmApiParse::getResponse(QNetworkReply *reply)
{
    qDebug() << "Response";
    // Если ошибки отсутсвуют
    if(!reply->error()){
        QJsonArray document = QJsonDocument::fromJson(reply->readAll()).array();
        db.connectToDataBase();
        for(auto el:document)
        {

            data.push_back(el.toObject()["id"].toVariant());
            data.push_back(el.toObject()["name"].toVariant());
            data.push_back(el.toObject()["bodyCount"].toVariant());
            data.push_back(el.toObject()["distance"].toVariant());
            qDebug() <<data[0].toInt()<<data[1].toString()<<data[2].toInt() <<data[3].toFloat();
            db.insertIntoSystems(std::move(data));

            data.push_back(el.toObject()["id"].toVariant());
            data.push_back(el.toObject()["coords"].toObject()["x"].toVariant());
            data.push_back(el.toObject()["coords"].toObject()["y"].toVariant());
            data.push_back(el.toObject()["coords"].toObject()["z"].toVariant());
            db.insertIntoCoords(std::move(data));
        }

    }
    reply->deleteLater();
} 

и отправка запроса

bool DataBaseJob::insertIntoCoords(const QVariantList data)
{
    QSqlQuery query;
    query.prepare("INSERT INTO coords (id, x, y, z)"
                  "VALUES (:id, :x, :y, :z)");
    query.bindValue(":id", data[0].toInt());
    query.bindValue(":x", data[1].toFloat());
    query.bindValue(":y", data[2].toFloat());
    query.bindValue(":z", data[3].toFloat());
    if(!query.exec()){
        qDebug() << "error insert into coords";
        qDebug() << query.lastError().text();
        return false;
    } else {
        return true;
    }
    return false;
}

Ответы (0 шт):