Как получить более подробные утверждения об отказе ограничения от SQLite?

Я создал инструмент для некоторых аналитиков, который в качестве первого шага включает в себя .importзагрузку группы CSV-файлов, созданных аналитиками, в базу данных SQLite. Файлы csv соответствуют таблицам, и в схеме есть много ограничений внешнего ключа и других проверок целостности.

Пользователи будут достаточно умными и техническими людьми, но они не обязательно будут знать что-либо о реляционных базах данных, а сообщения об ошибках, которые SQlite выдает по умолчанию, недостаточно ясны сами по себе. В идеале решение проблемы должно быть ясно из сообщения об ошибке ограничения.

Пример:

scheduled_duration.csv:9: INSERT failed: FOREIGN KEY constraint failed

Я хотел бы создать сообщение, больше похожее на:

scheduled_duration.csv:9: Referenced column training_track ('9345') does not exist.

Схема уже знает эту дополнительную информацию о нарушении ограничения. Есть ли простой способ получить такое улучшенное сообщение? Необходимость в конечном итоге вручную реализовать мои собственные проверки целостности данных только для того, чтобы получить более качественные сообщения об ошибках, была бы огромной болью.


person rjt_jr    schedule 16.09.2017    source источник


Ответы (1)


Из-за ограничений отложенного внешнего ключа SQLite должен иметь возможность запоминать произвольное количество FK. нарушения ограничений. Чтобы упростить реализацию, это реализуется с помощью счетчика ошибок, и он используется, даже если никакие ограничения FK фактически не отложены.

Таким образом, с текущей реализацией невозможно получить лучшее сообщение об ошибке.

person CL.    schedule 16.09.2017