Я пытаюсь проверить, существует ли запись, которую пользователь хочет удалить, с помощью sqlite, создавая внешний ключ во временной таблице, ссылающейся на исходную таблицу, к сожалению, это не работает, я что-то упускаю из виду?
void enableForeignKeys()
{
const char* sql = "PRAGMA foreign_keys = ON;";
int writeToDB = sqlite3_exec(db, sql, callback, 0, &errorMessage);
if (writeToDB != SQLITE_OK) {
cerr << "SQL error: %s" << &errorMessage << endl;
sqlite3_free(errorMessage);
}
else {
sql = "PRAGMA foreign_keys;";
sqlite3_exec(db, sql, callback, 0, &errorMessage);
return;
}
};
bool verifyEntryChoice(string referenceTable, string referencePrimaryKeyColumn, string chosenID)
{
sqlite3_open(filePath, &db);
enableForeignKeys();
string createTableQuery = "CREATE TEMP TABLE temp("
"tempID INT UNIQUE NOT NULL,"
"FOREIGN KEY(tempID) REFERENCES Customer(CustomerID));";
const char* createTableSQL = &createTableQuery[0];
cout << createTableSQL << endl;
int writeToDB = sqlite3_exec(db, createTableSQL, callback, 0, &errorMessage);
if (writeToDB != SQLITE_OK) {
cerr << "Error" << endl;
return false;
}
else cout << "Table created" << endl;
string insertQuery = "INSERT INTO temp(tempID)"
" VALUES(1);";
const char* insertSQL = &insertQuery[0];
cout << insertSQL << endl;
writeToDB = sqlite3_exec(db, insertSQL, callback, 0, &errorMessage);
if (writeToDB != SQLITE_OK) {
cerr << "Wrong ID!" << endl;
return false;
}
else {
cout << "ID verified" << endl;
return true;
}
}
Мне нужно добавить больше слов, чтобы это было опубликовано, извините, если это человеческая ошибка, а не что-то более сложное!