PostgreSQL创建枚举枚举

时间:2014-10-28 05:05:58

标签: sql postgresql enums

我想知道是否有任何方法可以在postgresql中创建枚举枚举 例如:

Animation is an enum of ('stop-motion', 'CGI', 'motion-capture')

movieGenre is an enum of (animation, 'fantasy', 'sci-fi', 'horror')

所以通过这种方法我可以插入类似的东西:

insert into movies (name, genre) values
  ('Dawn of the planets of apes', 'motion-capture'),
  ('annabelle', 'horror')`

可以有像

这样的查询
select * from movies where genre is animation

1 个答案:

答案 0 :(得分:0)

ltree数据类型将是前进的方式,请参阅文档hereltree数据类型是标签类型信息的优雅层次结构,如您的情况。您的标签路径为:

animation
animation.stop-motion
animation.CGI
animation.motion-capture
phantasy
sci-fi
horror

以及相应的INSERT声明:

INSERT INTO movies (name, genre) VALUES
  ('Dawn of the planets of apes', 'animation.motion-capture'),
  ('annabelle', 'horror');

SELECT陈述:

SELECT * FROM movies
WHERE genre <@ 'animation';

SELECT语句将返回三种动画类型中的任何一种记录。

请注意,ltree是一个扩展程序,因此如果您的超级用户已经为了其他目的而已经这样做了,那么您必须CREATE EXTENSION ltree;