If people would like to play, I have created a little kit to help in
creating first class enum types in a few seconds. It works something
like this:
make TYPENAME=rainbow ENUMS=' "red", "orange", "yellow", "green",
"blue", "indigo", "violet" ' make TYPENAME=rainbow install psql -f /path/to/contrib/rainbow-install.sql yourdb
and you are done. Now you can do:
create table foo( r rainbow); insert into foo values('red'); select 'red'::rainbow < 'green'::rainbow; <--
yieldstrue select rainbow_order('yellow'); <-- yields 2
The kit is at http://developer.postgresql.org/~adunstan/enumkit.tgz
Needs 8.0 or later, since it use PGXS.
Maximum number of values is 32767 - but if you use that many you're
insane anyway :-)
I did this as part of thinking about how we might do enums properly. AS
Chris KL recently noted - it is very often asked for. So this is not the
end of the road, just a tiny step at the beginning.
cheers
andrew