У меня есть две таблицы альбомов и песен, и каждая песня имеет ссылку на идентификатор квасца.
Таблица альбомов:
CREATE TABLE albums
(id INTEGER PRIMARY KEY ASC,
name TEXT,
additional TEXT)
Таблица песен:
CREATE TABLE songs
(id INTEGER PRIMARY KEY ASC,
album_fk INTEGER NOT NULL,
title TEXT,
url TEXT,
duration BIGINT NOT NULL)
и у меня также есть триггер для проверки, когда я удаляю альбом, если в нем есть существующие песни:
CREATE TRIGGER trigger_on_delete
BEFORE DELETE ON albums
FOR EACH ROW BEGIN
SELECT RAISE(FAIL,'album has songs cannot be deleted')
WHERE (SELECT album_fk FROM songs WHERE album_fk = OLD.id) IS NOT
NULL;)
END
все это работает нормально, но иногда
Exception: android.database.sqlite.SQLiteConstraintException: error
code 19: constraint failed
Stack Trace :
android.database.sqlite.SQLiteStatement.native_execute(Native Method)
android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:
66)
выбрасывается при попытке удалить альбом. Мой метод удаления - это просто удаление альбома по id. Плохо то, что я не могу воспроизвести это, поэтому я не могу предоставить много информации.
Я пробовал разные сценарии удаления альбома, но у меня никогда не было этого исключения.
Так что любые идеи, как можно исследовать эту проблему. В таблице альбомов нет никаких ограничений, так что может вызвать такое исключение? Любая помощь будет оценена.