我的表格“详细信息”具有以下结构
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']);
答案 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
由于您的最后评论,您需要一个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}';