In the C/C++ API for SQLite,外键约束的实施选项是在你的电话指定sqlite3_db_config()
:
sqlite3* db;
int err = sqlite3_open("databaseFileName", &db);
if(err != SQLITE_OK) /* die */
int fkeyConstraintsEnabled;
err = sqlite3_db_config(db, SQLITE_DBCONFIG_ENABLE_FKEY, /* either 0 or 1 to disable/enable constraints */, &fkeyConstraintsEnabled);
if(err != SQLITE_OK) /* die */
printf("Constraints now enabled: %d\r\n", fkeyConstraintsEnabled);
可以想象,你可以写一个函数来包装这个在C/C++:
void enforceForeignKeys(sqlite3* db, bool enforceForeignKeyConstraints) {
int expectedNewValue = enforceForeignKeyConstraints ? 1 : 0;
int actualNewValue;
int err = sqlite3_db_config(db, SQLITE_DBCONFIG_ENABLE_FKEY, expectedNewValue, &actualNewValue);
if(err != SQLITE_OK) throw err;
if(actualNewValue != expectedNewValue) throw SOME_USER_DEFINED_ERROR;
}
来源
2015-09-01 23:59:48
Dai
完美的作品。谢谢... – Mendes