SQLite3 C ++版本3.25.3中的外键支持

时间:2018-11-17 21:34:28

标签: sqlite

编辑

那行得通:

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)
     );
)";

1 个答案:

答案 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 ++问题。