首页 > 解决方案 > SQLite3 C++ ver.3.25.3 中的外键支持

问题描述

编辑

那行得通:

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

Pragma 什么也没给我, 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)
     );
)";

标签: sqlite

解决方案


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


推荐阅读