Я хочу, чтобы поле "name" было длинным не более 20 символов... возможно ли это в sqllite?
Ограничить количество символов текстового поля
Ответ 1
Нет. Per Типы данных В SQLite версии 3,
Обратите внимание, что числовые аргументы в круглых скобках, следующие за типом name (ex: "VARCHAR (255)" ) игнорируются SQLite - SQLite не делает налагать любые ограничения по длине (кроме больших глобальных SQLITE_MAX_LENGTH) по длине строк, BLOB или числовым значения.
Ответ 2
Да с ПРОВЕРКАМИ КОНТРОЛИРОВАНИЯ. Вот пример, обеспечивающий тип данных TEXT длиной менее или равным 20 символам.
CREATE TABLE IF NOT EXISTS "test"
(
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"name" TEXT NOT NULL
CHECK(
typeof("name") = "text" AND
length("name") <= 20
)
);
INSERT INTO "test" ("name") VALUES ("longer than twenty characters");
Результат:
Error: CHECK constraint failed: test
Возможно, слишком поздно, чтобы помочь OP, но, возможно, кто-то еще найдет это полезным.