我有一个表,其中的列如下:
inner_id(serial pk) | id(varchar) | name(varchar) | fid(varchar) 我想发送只有id和name的行:(id,name)我如何告诉Postgresql用基于串行主键(如字符串+主键)的值来完成'fid‘列?我想要这样的输出:
inner_id(serial pk) | id(varchar) | name(varchar) | fid(varchar)
1 G786k NAME FID-1
2 l7hk NAME FID-2作为奖励,我从python发送行,并在查询中使用%s
UPD。我试着像这样运行查询:
INSERT INTO table (id, name, fid)
VALUES (%s,%s,%s||TO_CHAR(inner_id));但是我得到一个错误,我不能引用inner_id(主键)
发布于 2019-08-08 23:54:12
由于您的inner_id是一个序列,因此您可以获取序列的名称并使用Nextval
所以它应该是这样的
INSERT INTO TABLE ("id","name","fid")
VALUES (your_id, 'some_name', 'FID-' || nextval('your_sequence_id') - 1);发布于 2019-08-09 03:49:37
如果你将inner_id定义为'serial‘,Postgres将为它生成序列。通常类似于"table_name_column_name-seq“。然后,您可以使用该序列的当前值为"fid“列设置默认值。
create table soq.ref_to_id( inner_id serial, id text, name text, fid text);
alter table soq.ref_to_id alter column fid set default 'FID-' || currval('soq.ref_to_id_inner_id_seq')::text;
-- insert tast data
insert into soq.ref_to_id(id, name)
values ('G786k', 'Gname')
, ('17hk', '17NAME');
-- check results
select * from soq.ref_to_id;https://stackoverflow.com/questions/57416352
复制相似问题