插入复合类型数组给出错误 postgresql 9.4--
Posted
技术标签:
【中文标题】插入复合类型数组给出错误 postgresql 9.4--【英文标题】:insert composite type array gives error postgresql 9.4-- 【发布时间】:2016-02-26 13:41:50 【问题描述】:CREATE TABLE people(
name_ varchar(50) NOT NULL,
count int NOT NULL DEFAULT 0
)
CREATE TABLE person_added(
date_ date NOT NULL,
all_people_ people[],
all_people_count int NOT NULL
)
CREATE TABLE all_people_array_table(
id SERIAL,
people_array person_added[]
)
INSERT INTO all_people_array_table(people_array) (SELECT ARRAY[CURRENT_DATE, ARRAY[('Jack',3)::people, ('John',6)::people], 1000] )
我收到此错误;
错误:ARRAY 类型的日期和情绪[] 无法匹配
正确的插入语句是什么?
【问题讨论】:
【参考方案1】:这对我有用:
insert into all_people_array_table(people_array)
select array[
(current_date,
array[
('Jack',3)::people,
('John',6)::people
], 1)::person_added
];
【讨论】:
如何插入 people_array 列,另一个 people[] 元素。我如何填充这个数组,如 ('Jack',3)、('John',8)、('Chris', 5) 等......在数组中使用相同的 current_date 值?update all_people_array_table set people_array[1].all_people_ = array_append(people_array[1].all_people_, ('Chris', 5)::people ) where id = 1;
但我不得不说这不是存储数据的真正关系方式。我建议你重新考虑你的数据库结构。
再次感谢:)) 不幸的是我需要这样做......但无论如何感谢您的提示。
最后一个问题:)...如何根据 person_add 表类型(由 current_date 添加)中的日期在 all_people_ 列中选择 people[] 数组?以上是关于插入复合类型数组给出错误 postgresql 9.4--的主要内容,如果未能解决你的问题,请参考以下文章