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

Здравствуйте!
Пишу андроид приложение, работающее с SQLite. У меня там картины, их авторы, всякое такое. Связь между картиной и автором - много к одному. Тоесть, у картины есть поле автор, которое ссылается на id автора. Если я удаляю автора, у которого уже есть картины, СУБД никак не оповещает о том, что нарушена ссылочая целостность.
Как можно обработать данную ситуацию? Мне нужно запретить пользователю просто так удалять автора, который используется в таблице "Картины"
  • Вопрос задан
  • 937 просмотров
Решения вопроса 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 не СУБД,
потому обрабатывать нужно как и в СУБД без поддержки целостности - на стороне прилложения
Ответ написан
Ваш ответ на вопрос

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

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