2013-11-25 19 views
6

Postgres'te SQLite'ye bir veritabanı oluşturma kodunu dönüştürmem gerekiyor. Takılıyorum çünkü SQLite enerileri oluşturmaya veya tür oluşturmaya izin vermiyor. Bu sorunu aşmanın bir yolunu arıyorum.ENUM ve SQLite içinde oluşturma türleri

Örneğin, Postgres olduğunu varsayalım: "..." diğer satırları temsil

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

. Bunu SQLite'ye nasıl çevirebilirim? Bir tablo içine VE başka bir tür içine kullanılabilecek bir ENUM türü nasıl oluşturulur? Bu tür yaratımın nasıl taklit edilebileceğinin yanı sıra (ki bu da bir tablo ve bir tür olarak kullanılabilir olmalıdır)?

+1

kullanın basit 'text' sütunu. –

cevap

10

SQLite, veri türlerini tanımlamayı desteklemez. Gerçekten de, SQLite sütunlara datatypes bile zorlamaz.

Gerçekten değerleri sınırlamak gerekirse, ben bu kadar FOREIGN KEY kullanmanızı tavsiye:

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