Как избежать вставки неправильного типа данных в таблицы SQLite?

SQLite имеет эту "особенность", тогда как даже при создании столбца типа INTEGER или же REAL, он позволяет вставить в него строку, даже строку без цифр, например, "быстрая лиса перепрыгнула через ленивую собаку".

Как вы предотвращаете такие вставки в ваших проектах?

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

2 ответа

Решение

Вы можете реализовать это с помощью CHECK ограничение (см. предыдущий ответ здесь). Это будет выглядеть как

   CREATE TABLE T (
       N   INTEGER CHECK(TYPEOF(N) = 'integer'),
       Str TEXT CHECK(TYPEOF(Str) = 'text'),
       Dt  DATETIME CHECK(JULIANDAY(Dt) IS NOT NULL)
   );

Лучший и безопасный способ - написать функцию (isNumeric, isString и т. Д.), Которая проверяет пользовательский ввод...

Другие вопросы по тегам