Ограничить количество символов текстового поля

Я хочу, чтобы поле "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, но, возможно, кто-то еще найдет это полезным.