2013-11-25 14 views
6

devo convertire il codice di creare un database in Postgres a SQLite. Sono bloccato perché SQLite non consente di eseguire enumerazioni o creare tipi. Sto cercando un modo per aggirare questo problema.ENUM e tipi creazione in SQLite

Per esempio, immaginate che abbiamo in 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 , 
... 
); 

L ' "..." rappresenta altre righe. Come tradurre quello in SQLite? Come creare un tipo ENUM, che potrebbe essere utilizzato in una tabella AND in un altro tipo? Oltre a come simulare la creazione di questo tipo (che dovrebbe essere utilizzabile anche in una tabella e un tipo)?

+1

utilizzare un semplice 'Text' colonna. –

risposta

10

SQLite non supporta la definizione di tipi di dati. In effetti, SQLite non impone nemmeno i tipi di dati alle colonne.

Se avete veramente bisogno di valori limite, mi consiglia di utilizzare FOREIGN KEY come questo:

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), 
    ... 
);