Re: Enumerated (enum) types
От | Harald Fuchs |
---|---|
Тема | Re: Enumerated (enum) types |
Дата | |
Msg-id | pud4n7raqa.fsf@srv.protecting.net обсуждение исходный текст |
Ответ на | Enumerated (enum) types ("Michael Lourant" <lourant@gmail.com>) |
Список | pgsql-sql |
In article <5ac667b80805270729x4f93cc14n4a868d3d3f624d7b@mail.gmail.com>, "Michael Lourant" <lourant@gmail.com> writes: > Type Safety > Enumerated types are completely separate data types and may not be compared > with each other. ... > An Alternative Way To Do The Same > Instead of using an enum type we can set up a CHECK CONSTRAINT - this tells > postgresql to make sure that the value we are entering is valid. > CREATE TABLE person ( > personid int not null primary key, > favourite_colour varchar(255) NOT NULL, > CHECK (favourite_colour IN ('red', 'blue', 'yellow', 'purple')) > ); > INSERT INTO person(personid, favourite_colour) VALUES (1, 'red'); > INSERT 0 1 > Now for something not in the list: > INSERT INTO person(personid, favourite_colour) VALUES (2, 'green'); > ERROR: new row for relation "person" violates check constraint "person_favourite_colour_check" Type safety is the thing you lose by replacing an ENUM by a CHECK constraint - you can still do something nonsensical like SELECT * FROM person WHERE favourite_colour = 'green'
В списке pgsql-sql по дате отправления: