Задать вопрос

Как поддерживать ссылочную целостность в SQLite?

Здравствуйте!
Пишу андроид приложение, работающее с SQLite. У меня там картины, их авторы, всякое такое. Связь между картиной и автором - много к одному. Тоесть, у картины есть поле автор, которое ссылается на id автора. Если я удаляю автора, у которого уже есть картины, СУБД никак не оповещает о том, что нарушена ссылочая целостность.
Как можно обработать данную ситуацию? Мне нужно запретить пользователю просто так удалять автора, который используется в таблице "Картины"
  • Вопрос задан
  • 961 просмотр
Подписаться 4 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Android-разработчик
    12 месяцев
    Далее
  • Нетология
    Android-разработчик с нуля
    14 месяцев
    Далее
  • LearnQA
    Автоматизатор мобильных приложений
    9 недель
    Далее
Решения вопроса 1
@xlusv
1. Назначены ли у вас ссылки на внешние ключи? Если нет - почитайте этот раздел документации: https://www.sqlite.org/foreignkeys.html
Важный момент: в SQLite нет возможности добавить ограничение через ALTER TABLE, т.е. вот так: "ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY key_name REFERENCES ref_table.ref_key_name" как в стандарте. Придется удалить и создать таблицу с новой схемой, сохранив данные где-нибудь, если они нужны.
2. Проверьте этот момент: www.sqlite.org/pragma.html#pragma_foreign_keys
По умолчанию параметр установлен в OFF. Нужно в ON. Подключитесь к БД из терминала или клиента и измените значение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
SQLite не СУБД,
потому обрабатывать нужно как и в СУБД без поддержки целостности - на стороне прилложения
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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