2013-11-25 25 views
6

Postgresでデータベースを作成するコードをSQLiteに変換する必要があります。 SQLiteでは列挙型や型を作成することができないため、私は立ち往生していません。私はこの問題を回避する方法を模索している。ENUMと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にどのように翻訳するのですか?どのようにENUM型を作成するには、テーブルに使用することができ、他の型に?このタイプの作成をシミュレートする方法のほかに(テーブルとタイプにも使えるはずです)

+1

シンプル 'text'列を使用します。 –

答えて

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