Поддержка внешнего ключа в SQLite3 C ++ ver.3.25.3 - PullRequest
0 голосов
/ 18 ноября 2018

РЕДАКТИРОВАТЬ

Это сработало:

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 голосов
/ 18 ноября 2018
 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 ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...