Как избежать вставки неправильного типа данных в таблицы 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 и т. Д.), Которая проверяет пользовательский ввод...