Пользовательские функции не могут быть созданы в самом SQLite. (Тем не менее, любой язык сценариев делает это легко.)
Я пытаюсь создать триггер, который ловит вставки в таблицу Viewings, где внешний ключ (viewings.location) не соответствует существующему первичному ключу в таблице Places (place.location). Логика, насколько я могу судить, работает как положено. Однако моя проблема связана с попыткой объединить указанное значение в сообщение об ошибке в функции повышения. Это не разрешено?
create trigger catchForeignKeyError BEFORE INSERT ON VIEWINGS
BEGIN
SELECT CASE
WHEN NEW.location NOT IN (SELECT PLACES.location FROM PLACES) THEN
RAISE(ABORT, 'Error: Insert into the VIEWINGS table references location '''||NEW.location||''' that is not found in the PLACES table.')
END;
END;