【发布时间】:2020-06-19 07:54:22
【问题描述】:
我正在尝试通过在引用原始表的临时表中创建外键来通过 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;
}
}
我必须添加更多的文字才能发布,如果这是人为错误而不是更复杂的事情,对不起!
【问题讨论】: