2013-11-25 68 views
6

我必須將在Postgres中創建數據庫的代碼轉換爲SQLite。我被卡住了,因爲SQLite不允許枚舉或創建類型。我正在尋找解決此問題的方法。在SQLite中創建ENUM和類型

例如,假設我們在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?如何創建一個ENUM類型,可以將它用於表格和其他類型?除了如何模擬這種類型創建(它也應該可用於表和類型)?

+1

用一個簡單的'text'列。 – 2013-11-25 08:35:12

回答

10

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