Sql 如何使用nextval()在字符串中插入包含自己ID的行
我有一个表,其中包含一个列,该列的字符串包含它自己的ID。 如何使用单个SQL语句插入新行Sql 如何使用nextval()在字符串中插入包含自己ID的行,sql,postgresql,sql-insert,auto-increment,create-table,Sql,Postgresql,Sql Insert,Auto Increment,Create Table,我有一个表,其中包含一个列,该列的字符串包含它自己的ID。 如何使用单个SQL语句插入新行 id| URL --|---------------------- 1|"http://example.com/1" 2|"http://example.com/2" 3|"http://example.com/3" 我需要像这样的东西 NEXT_ID=SELECT nextval('table_name_ID_seq'); 在表中插入\
id| URL
--|----------------------
1|"http://example.com/1"
2|"http://example.com/2"
3|"http://example.com/3"
我需要像这样的东西
NEXT_ID=SELECT nextval('table_name_ID_seq');
在表中插入\u name(id,name)值(下一个\u id,'http://example.com/“+NEXT_ID)返回*
一个选项是首先选择子查询中的下一个序列:
insert into test(id, url)
select id, 'http://example.com/' || id::text
from (select nextval('test_id_seq') as id) x;
您也可以使用计算列,这样可以更清晰地插入代码:
create table test(
id SERIAL,
url text,
new_url text generated always as (url || id::text) stored
);
insert into test(url) values ('http://example.com/');
给你:
| id | url | new_url |
| --- | ------------------- | -------------------- |
| 1 | http://example.com/ | http://example.com/1 |
我无法添加计算列,因为该表包含多态数据,因此对其他记录没有意义(@Vitim.us:好的,那么你想在我的答案中使用第一个查询。谢谢,我不知道这是两种不同的方法。你也可以使用CTE,并将下一次呼叫放入WITH子句中;这基本上只是@GMB最初建议将其放入from中的一个变体,所以只需在此处提及它,而不是将其作为不同的查询提交回答。@xzilla plz将您的评论作为答案,并举例说明