- savePoint("sender_sp", db);
- QSqlQuery addSenderQuery = executePreparedQuery("insert_sender", sender, db);
- if(addSenderQuery.lastError().isValid())
- rollbackSavePoint("sender_sp", db);
- else
- releaseSavePoint("sender_sp", db);
+ selectSenderQuery = executePreparedQuery("select_senderid", sender, db);
+ if(selectSenderQuery.first()) {
+ senderIdList << selectSenderQuery.value(0).toInt();
+ senderIds[sender] = selectSenderQuery.value(0).toInt();
+ } else {
+ savePoint("sender_sp", db);
+ addSenderQuery= executePreparedQuery("insert_sender", sender, db);
+ if(addSenderQuery.lastError().isValid()) {
+ // seems it was inserted meanwhile... by a different thread
+ rollbackSavePoint("sender_sp", db);
+ selectSenderQuery = db.exec(selectSenderQuery.lastQuery());
+ selectSenderQuery.first();
+ senderIdList << selectSenderQuery.value(0).toInt();
+ senderIds[sender] = selectSenderQuery.value(0).toInt();
+ } else {
+ releaseSavePoint("sender_sp", db);
+ addSenderQuery.first();
+ senderIdList << addSenderQuery.value(0).toInt();
+ senderIds[sender] = addSenderQuery.value(0).toInt();
+ }
+ }