将值插入PostgreSQL中的数组列

时间:2018-06-20 00:37:03

标签: sql postgresql

我的表格“详细信息”具有以下结构

id     status1      status2    names
 1    approved     rejected     NULL
 2    approved     rejected     NULL
 3    approved     rejected     NULL
 4    rejected     rejected     NULL

我要使用默认值{john,smith}将值插入数组“名称”数组

示例:我需要

  id     status1      status2    names
   1    approved     rejected   {john,smith}
   2    approved     rejected   {john,smith}
   3    approved     rejected   {john,smith}
   4    rejected     rejected   {john,smith}

我写

时失败
INSERT INTO details (names) VALUES(ARRAY['john', 'smith']);

3 个答案:

答案 0 :(得分:1)

您的INSERT语句没有问题,只要您的版本至少为9.3,并且名称列的类型为text[]varchar[],即 variable-长度字符串

create table details( id int, status1 varchar(25), status2 varchar(25), names varchar[]);
insert into details(names) values( ARRAY['john', 'smith']);
select * from details;

id     status1  status2   names
(null)  (null)  (null)  john,smith

SQL Fiddle Demo

由于您的最后评论,您需要一个update语句,该语句仅将名称列设置为建议的 @a_horse_with_no_name ,而不设置insert,其中(null)的值是为其余的列生成。

答案 1 :(得分:1)

INSERT创建了全新的-但您想更改现有的行,因此需要使用UPDATE

update details 
  set names  = ARRAY['john', 'smith'];

答案 2 :(得分:1)

如果要将现有值保留为新值:

UPDATE details SET names = names || '{john, smith}';