我想知道是否有任何方法可以在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
答案 0 :(得分:0)
ltree
数据类型将是前进的方式,请参阅文档here。 ltree
数据类型是标签类型信息的优雅层次结构,如您的情况。您的标签路径为:
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;
。