Перечисление и создание типов в SQLite

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

например, представьте, что мы имеем в Postgres:

CREATE TYPE AckStatusEnum AS ENUM (
'ACKNOWLEDGED','NOT_ACKNOWLEDGED','ERROR_RECEIVED','NOT_SENT'
);

CREATE TABLE ACK_EVENT(
...
    ACK_STATUS AckStatusEnum,
...
);

CREATE TYPE aggr_type AS (
...
    severity alertseverityenum ,
...
);

в "..."представляет другие строки. Как перевести это на SQLite? Как создать тип перечисления, который можно использовать в таблице и в другом типе? Кроме того, как имитировать создание этого типа (который должен также можно использовать в таблице и тип)?

1 ответов


SQLite не поддерживает определение типов данных. Действительно, SQLite даже не применяет типы данных к столбцам.

Если вам действительно нужно ограничить значения, я рекомендую использовать FOREIGN KEY а это:

CREATE TABLE AckStatusEnum (id INTEGER PRIMARY KEY AUTOINCREMENT, AckStatusEnum TEXT);
INSERT INTO AckStatusEnum(AckStatusEnum) VALUES('ACKNOWLEDGED'), ('NOT_ACKNOWLEDGED'), ('ERROR_RECEIVED'), ('NOT_SENT');

CREATE TABLE ACK_EVENT(
    ...
    ACK_STATUS REFERENCES AckStatusEnum(id),
    ...
);