编辑
那行得通:
std::string tab_B = R"(
CREATE TABLE B (
b INT NOT NULL PRIMARY KEY,
bb INT NOT NULL,
FOREIGN KEY(b) REFERENCES A(a)
);
)";
不需要编译和配置
编辑结束
我尝试了实用方法:
std::string fk_on = "PRAGMA foreign_keys = ON;";
sqlite3_exec(DB, fk_on.c_str(), NULL, 0, &messaggeError);
并配置一个:
sqlite3_db_config(DB, SQLITE_DBCONFIG_ENABLE_FKEY, 1, &fkeyConstraintsEnabled);
编译指示什么也没给我,fkeyConstraintsEnabled给我1。 我想做的是创建B表:
std::string tab_A = R"(
CREATE TABLE A (
a INT NOT NULL PRIMARY KEY
);
)";
std::string tab_B = R"(
CREATE TABLE B (
b INT NOT NULL PRIMARY KEY,
bb INT NOT NULL FOREIGN_KEY REFERENCES A(a)
);
)";
答案 0 :(得分:0)
std::string tab_A = R"(
CREATE TABLE A (
a INT NOT NULL PRIMARY KEY
);
)";
std::string tab_B = R"(
CREATE TABLE B (
b INT NOT NULL PRIMARY KEY,
bb INT NOT NULL , FOREIGN_KEY(bb) REFERENCES A(a)
);
)";
这是根据sqlite文档完成的。顺便说一句,这是一个sqlite问题,而不是c ++问题。