Обсуждение: Migrating a MySQL schema with an enum
SQL gurus, Migrating a MySQL schema with an enum to PostgreSQL, is there an equivalent type or do I have to declare another table for "enum" values. -- Keith Gray Technical Development Manager Heart Consulting Services P/L mailto:keith@heart.com.au
Keith Gray wrote: > SQL gurus, > > Migrating a MySQL schema with an enum to PostgreSQL, > is there an equivalent type or do I have to declare > another table for "enum" values. You can use another table, or use CHECK constraints to limit the possible values. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
Keith Gray writes:
> Migrating a MySQL schema with an enum to PostgreSQL,
> is there an equivalent type or do I have to declare
> another table for "enum" values.
Generally, you'd use a text field with a check constraint. For example:
CREATE TABLE car (...color text check (color in ('blue', 'green', 'yellow')),...
);
--
Peter Eisentraut peter_e@gmx.net
> Keith Gray writes:
>
> > Migrating a MySQL schema with an enum to PostgreSQL,
> > is there an equivalent type or do I have to declare
> > another table for "enum" values.
>
> Generally, you'd use a text field with a check constraint. For example:
>
> CREATE TABLE car (
> ...
> color text check (color in ('blue', 'green', 'yellow')),
> ...
> );
Nope - cos you need 'blue,green' as a value, etc. as well.
I use a varbit field and do the translations from an array of strings to a
bitset and vice versa in the app layer.
Chris
Christopher Kings-Lynne writes:
> > Generally, you'd use a text field with a check constraint. For example:
> >
> > CREATE TABLE car (
> > ...
> > color text check (color in ('blue', 'green', 'yellow')),
> > ...
> > );
>
> Nope - cos you need 'blue,green' as a value, etc. as well.
That's not an enumeration type, that's a set. For set's you create a
separate table.
--
Peter Eisentraut peter_e@gmx.net
On Mié 20 Mar 2002 20:41, you wrote:
> SQL gurus,
>
> Migrating a MySQL schema with an enum to PostgreSQL,
> is there an equivalent type or do I have to declare
> another table for "enum" values.
I had to migrate a DB from MySQL to PostgreSQL that had some enum as field
data type (I can't believe that something like that exists), and because it
was something like:
enum('s','n')
I changed it for:
col1 CHAR CHECK (col1 IN ('s','n'))
Which is SQL. :-)
If what is enumerated are numbres, just use INT instead of CHAR.
Saludos... :-)
--
Porqué usar una base de datos relacional cualquiera,
si podés usar PostgreSQL?
-----------------------------------------------------------------
Martín Marqués | mmarques@unl.edu.ar
Programador, Administrador, DBA | Centro de Telematica Universidad Nacional
del Litoral
-----------------------------------------------------------------
On Mié 20 Mar 2002 23:31, you wrote:
> > Keith Gray writes:
> > > Migrating a MySQL schema with an enum to PostgreSQL,
> > > is there an equivalent type or do I have to declare
> > > another table for "enum" values.
> >
> > Generally, you'd use a text field with a check constraint. For example:
> >
> > CREATE TABLE car (
> > ...
> > color text check (color in ('blue', 'green', 'yellow')),
> > ...
> > );
>
> Nope - cos you need 'blue,green' as a value, etc. as well.
That's not how enum() works.
--
Porqué usar una base de datos relacional cualquiera,
si podés usar PostgreSQL?
-----------------------------------------------------------------
Martín Marqués | mmarques@unl.edu.ar
Programador, Administrador, DBA | Centro de Telematica Universidad Nacional
del Litoral
-----------------------------------------------------------------
hi
i'm have installed latest version of postgresql which is 7.2
why i can not use timestamp('now') or time('now') ?
it said : ERROR: parser: parse error at or near "'"
can anyone explain why?
i'm try in 7.1.x. it's works well
did i miss something when installation? is it in new version need somekind
of "plug-in"?
ps: date('now') is work fine
thx in advance
> i'm have installed latest version of postgresql which is 7.2
> why i can not use timestamp('now') or time('now') ?
> it said : ERROR: parser: parse error at or near "'"
Those two words have become a little more reserved. If you go
"timestamp"('now') or "time"('now') it should work.
Even better, I think you can go timestamp 'now' or time 'now' instead
IIRC.
Chris
Martín Marqués wrote: > On Mié 20 Mar 2002 20:41, you wrote: > >>SQL gurus, >> >>Migrating a MySQL schema with an enum to PostgreSQL, >>is there an equivalent type or do I have to declare >>another table for "enum" values. > > > I had to migrate a DB from MySQL to PostgreSQL that had some enum as field > data type (I can't believe that something like that exists) <snip> another shot at the mysql db. Please don't forget that PG also has non standard data types available. Vinny
On Thu, Mar 21, 2002 at 09:40:42AM -0500, Vincent Stoessel wrote: > Mart?n Marqu?s wrote: > >On Mi? 20 Mar 2002 20:41, you wrote: > > > >>SQL gurus, > >> > >>Migrating a MySQL schema with an enum to PostgreSQL, > >>is there an equivalent type or do I have to declare > >>another table for "enum" values. > > > > > >I had to migrate a DB from MySQL to PostgreSQL that had some enum as field > >data type (I can't believe that something like that exists) > > <snip> > > another shot at the mysql db. > Please don't forget that PG also has non standard data types > available. Your pique at seeing what you took as an unfair shot at another db caused you to be blinded to what Martin was pointing out. In this case, MySQL has a gratutiously non-standard feature: the equivalent CHECK constraint is only a few more characters, and easier to read (IMHO) Ross
On Jue 21 Mar 2002 13:02, Ross J. Reedstrom wrote:
> On Thu, Mar 21, 2002 at 09:40:42AM -0500, Vincent Stoessel wrote:
> > Mart?n Marqu?s wrote:
> > >On Mi? 20 Mar 2002 20:41, you wrote:
> > >>SQL gurus,
> > >>
> > >>Migrating a MySQL schema with an enum to PostgreSQL,
> > >>is there an equivalent type or do I have to declare
> > >>another table for "enum" values.
> > >
> > >I had to migrate a DB from MySQL to PostgreSQL that had some enum as
> > > field data type (I can't believe that something like that exists)
> >
> > <snip>
> >
> > another shot at the mysql db.
> > Please don't forget that PG also has non standard data types
> > available.
>
> Your pique at seeing what you took as an unfair shot at another db caused
> you to be blinded to what Martin was pointing out. In this case, MySQL has
> a gratutiously non-standard feature: the equivalent CHECK constraint is
> only a few more characters, and easier to read (IMHO)
Thanks Ross, I was just about to say the same thing. Why had an unstandard
data type, whn you can have it SQL-standard.
I think that the problem MySQL has is CHECK.
Saludos... :-)
--
Porqué usar una base de datos relacional cualquiera,
si podés usar PostgreSQL?
-----------------------------------------------------------------
Martín Marqués | mmarques@unl.edu.ar
Programador, Administrador, DBA | Centro de Telematica Universidad Nacional
del Litoral
-----------------------------------------------------------------