Как построить внешний ключ по умолчанию с поддержкой sqlite? - PullRequest
0 голосов
/ 06 декабря 2018

Я использую SQLite3 и знаю, что поддержка внешних ключей отключена по умолчанию по некоторым причинам совместимости.Но я хочу создать свой собственный SQLite3 с включенным внешним ключом по умолчанию.Я просмотрел некоторые исходные коды (версия Amalgamation) и обнаружил оценку макроса

#if defined(SQLITE_DEFAULT_FOREIGN_KEYS) && SQLITE_DEFAULT_FOREIGN_KEYS
             | SQLITE_ForeignKeys
#endif

Я попытался добавить определение макроса

#define SQLITE_DEFAULT_FOREIGN_KEYS 1

внутри или снаружи

#ifndef SQLITE_OMIT_TRIGGER
#ifndef SQLITE_OMIT_FOREIGN_KE

И построил, но это не имело значения, значение внешнего ключа по умолчанию все еще было 0.

Итак, мой вопрос: как мне изменить исходный код, чтобы включить внешний ключ по умолчанию?(Я знаю, что это легко вызвать, но это другой вопрос.)

1 Ответ

0 голосов
/ 06 декабря 2018

... Извините, но мне это удалось, и проблема обнаружилась, потому что я запустил файл sqlite3.exe из-за настроек пути.После моей модификации

PRAGMA foreign_keys;

в sqlite shell выводит 1, и это все еще срабатывает.В случае по умолчанию, когда я пытаюсь вставить строку с недопустимой ссылкой на внешний ключ, он сообщает об ошибке «Сбой ограничения FOREIGN KEY».

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