that's how I'd do it, since in reality, that's all an ENUM is, is a mini foreign table internalized onto a column in another table.

Vivek Khera wrote:

"SD" == Shridhar Daithankar <[EMAIL PROTECTED]> writes:



SD> On 3 Sep 2003 at 14:30, Bruno BAGUETTE wrote:


The problem is that this MySQL database uses ENUM, do you see what can I
do to migrate ENUM into PostgreSQL ?



SD> varchar with check constraints. Add constraits to allow only SD> certain values of varchar string.

I used to do this.  It turns out to be horribly inflexible when you
need to alter the enum values since the constraints cannot easily be
changed.

What I do is create a short table for the enum like this:

CREATE TABLE status_levels (
status varchar(10) PRIMARY KEY
) WITHOUT OIDS;
INSERT INTO status_levels (status) VALUES ('active');
INSERT INTO status_levels (status) VALUES ('overdue');
INSERT INTO status_levels (status) VALUES ('suspended');
INSERT INTO status_levels (status) VALUES ('terminated');

then reference it via foreign key from the "enum" field:

CREATE TABLE whatever (
...
?status varchar(10) NOT NULL DEFAULT 'active' REFERENCES status_levels(status),
...
);








---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html

Reply via email to