Нарушение внешнего ключа не вызывает ошибку в SQLite3 [дубликат]

Это означает, что указанная переменная не указана ни на что. Я мог бы сгенерировать это так:

SqlConnection connection = null;
connection.Open();

Это вызовет ошибку, потому что, пока я объявил переменную «connection», она не указала ни на что. Когда я пытаюсь вызвать член «Open», для его устранения нет ссылки, и он будет вызывать ошибку.

Чтобы избежать этой ошибки:

  1. Всегда инициализируйте свои объекты, прежде чем пытаться что-либо с ними делать.
  2. Если вы не уверены, что объект имеет значение null, проверьте его с помощью object == null.

Инструмент Resharper JetBrains определит каждое место в вашем коде, которое имеет возможность ошибки нулевой ссылки, позволяя вам ввести нулевую проверку. Эта ошибка является источником ошибок номер один, IMHO.

23
задан a_horse_with_no_name 30 March 2012 в 08:04
поделиться

4 ответа

В SQLite 3.x вам нужно сделать следующий запрос каждый раз при подключении к базе данных SQLite:

PRAGMA foreign_keys = ON;

В противном случае SQLite будет игнорировать все ограничения внешнего ключа.

Почему каждый раз? Обратная совместимость с SQLite 2.x в соответствии с документацией .

В SQLite 4.x ограничения FK будут установлены по умолчанию .

54
ответ дан kijin 26 August 2018 в 19:36
поделиться

Поддержка внешних ключей SQLite

sqlite> PRAGMA foreign_keys = ON;

Это позволит ограничить внешние ключи.

2
ответ дан animuson 26 August 2018 в 19:36
поделиться

Проверьте, есть ли в вашем SQLite ограничения внешнего ключа: http://sqlite.org/foreignkeys.html#fk_enable

0
ответ дан Dmitry A. Shashkin 26 August 2018 в 19:36
поделиться

Вы прочитали документацию? На главной странице говорится, что она представлена ​​с версией 3.6.19. Ссылка показывает, как использовать внешние ключи (ваш код верен).

Предоставляет ли ваш код какие-либо сообщения об ошибках, которые вы пропустили? Вы проверяли все предварительные условия, указанные в документации?

0
ответ дан mrab 26 August 2018 в 19:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: