Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 596
#1

SQLite запретить удаление строки, если есть ссылки на нее - Программирование Android

04.10.2015, 06:13. Просмотров 273. Ответов 6
Метки нет (Все метки)

Здравствуйте!

Как создать таблицы, чтобы при попытке удаления строк в одной из них операция проваливалась, если на нее есть ссылка из строки другой таблицы? Чтобы не получилось так, что строка удалилась, а строки из другой таблицы ссылались на уже не существующий ID. Это возможно, вообще? Надеюсь понятно объяснил суть проблемы?.
Заранее спасибо за пример!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2015, 06:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос SQLite запретить удаление строки, если есть ссылки на нее (Программирование Android):

Удаление строки из БД Sqlite - Программирование Android
Добрый вечер. Хочу удалить строку по имени. Что то не получается. Помогите пожалуйста. public class DataBaseHelper extends...

SQLite, удалить все ссылки (constraints) - Программирование Android
Есть 2 таблицы. Допустим "Предприятие" и "Работник". Как сделать, что при удалении записи из Предприятие, автоматически удалялись все...

Если в файле есть запятая, то текст строки после нее сохранить в другой файл - Pascal
Здравствуйте. Подскажите пожалуйста, как продолжить программу, на все мои попытки паскаль ругается нехорошими словами) Смысл задания - в...

Удаление ссылки из RichEdit после нажатия на нее - Delphi
Вобщем при нажатии на ссылку она выделяется буквально на миг и после этого становится не выделенной (все происходит за секунду), задача...

Зачем нужны rvalue ссылки, если есть универсальные ссылки - C++
Читаю книгу Скотта Мэйерса... Что-то я совсем запутался с этими rvalue ссылками. Я не пойму, зачем нужны rvalue ссылки, если есть...

Создание системной переменной если её нет и удаление если есть (setenv) - CMD/BAT
Нужен своеобразный переключатель определенной системной переменной с помощью утилиты setenv. Суть его работы: Если переменная VAR...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,433
Записей в блоге: 2
04.10.2015, 14:46 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
contedevel, можно. Нужно включить каскадность данных.
Java
1
2
3
4
5
6
7
8
@Override
public void onOpen(SQLiteDatabase db) {
    super.onOpen(db);
    if (!db.isReadOnly()) {
        // Enable foreign key constraints
        db.execSQL("PRAGMA foreign_keys=ON;");
    }
}
и при создании описывать связи ON DELETE CASCADE

http://stackoverflow.com/a/3266882/1600206
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 596
04.10.2015, 14:49  [ТС] #3
Спасибо за подробный ответ!
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,433
Записей в блоге: 2
04.10.2015, 15:18 #4
contedevel, не за что. Хотя я бы использовал ORM какую-нибудь, например, ORMLite. Тогда Вам не придётся беспокоиться об этом.
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 596
04.10.2015, 19:22  [ТС] #5
Цитата Сообщение от YuraAAA Посмотреть сообщение
Хотя я бы использовал ORM какую-нибудь, например, ORMLite. Тогда Вам не придётся беспокоиться об этом.
Да, пользователи уже используют приложение с SQLite и код под нее уже весь написан, не хочется переделывать все) Просто в обнове структура немного усложнилась таблиц, вот и появилась необходимость перестраховаться от удаления элементов, находящихся в связи с другими
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,433
Записей в блоге: 2
04.10.2015, 19:55 #6
contedevel, можете также вручную проверять наличие связи, если она всего одна.
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 596
04.10.2015, 19:58  [ТС] #7
Цитата Сообщение от YuraAAA Посмотреть сообщение
можете также вручную проверять наличие связи, если она всего одна.
Пока так и работает, но связей много, сложно отследить все уязвимости
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2015, 19:58
Привет! Вот еще темы с ответами:

Удаление строки из DataGridView субд SQLite - C#
Уважаемые программисты, возникла проблема. Простите за корявый русский, башня уже вяло соображает..) Имеется БД SQLite, из нее...

Удаление строки для последующей записи в нее - C (СИ)
как в си отчищать строку символов что бы туда что нибудь записать снова можно было?

Какой опцией rsync можно запретить удаление файла, если он был удалён в источнике? - Bash
Какой ключ предохранит от удаления файлы в папке бекапа, если соответствующий файл был удален в исходной папке? поможет ли мне ключ...

Здесь есть удаление столбца, как добавить удаление строки - C++
#include <iostream> #include <conio.h> using namespace std; int main() { int n; do {cout << "Razmer massiva: "; cin >> n;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.10.2015, 19:58
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru