sqlite - 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)
);
)";
解决方案
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++ 问题。
推荐阅读
- c++ - 说明此场景中的类和范围
- java - 为什么即使键是 az 和 26 个字母,这段代码也总是打印 false。另外如何在字符串中找到重复的字符?
- asp.net-mvc - 创建 ASP.NET Core Web App (MVC) 项目时的“解决方案 (0) 项目”
- python - PySimpleGUI 中的 window.Read() 函数出现错误
- r - 如何有效地从单个变量构建 R 中的面板数据数据框
- c++ - 使用作用域的 `polymorphic_allocator` 和 `boost::circular_buffer` 失败
- php - 登录会话仅在使用密钥登录或从 wp-admin 端登录时才有效,而不是直接从弹出加载网站
- flutter - [tag][!] Android Studio(未安装)[tag],在 PC 上运行颤振医生时出错
- sql - Postgresql 查询基于 2 列过滤最新数据
- django - 如何在 drf-yasg 中排除特定端点的显示过滤器