CREATE TYPE pencil_count AS(
pencil_color varchar(30),
count integer
);
CREATE TYPE pencil_count_with_date(
date_ date,
pencil_count pencil_count[]
);
CREATE TABLE pencils(id serial, pencils_ pencil_count_with_date[]);
INSERT INTO pencils(pencils_)
VALUES('{"(\"2016-03-13\",{"(\"blue\",1)","(\"red\",2)"})"}');
字符串
如果我想在不使用ARRAY[...]
的情况下添加这个复合数组,正确的语法是什么?
2条答案
按热度按时间wz3gfoph1#
当您添加新的嵌套级别时,使用文字字符串将变得可读性较差:
字符串
SqlFiddleDemo
备注:
1.你需要引用每个级别,
"
根据嵌套级别被\
转义。1.这种模式看起来像是试图将OO世界引入数据库。它可能比规范化版本更难维护,也更慢。Related question.
1.如果需要的话,你可以用
$$
来引用字符串。1.使用
ARRAY
和ROW
可以更容易地发现每个级别的开始和停止位置。wooyq4lh2#
再次,问Postgres.扩展的过程为your previous question:
字符串
询问Postgres每个嵌套级别:
型
测试结果:
型
fiddle的
老小提琴
到目前为止,我完全同意这个建议:多层嵌套行类型通常是复杂和低效的。
更多关于你上一个问题的回答: