如何使用 nextval() 在字符串中插入包含自己 ID 的行
How to use nextval() to insert a row containing its own ID in a string
我有一个 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');
insert into table_name (id, name) values (NEXT_ID, 'http://example.com/' + NEXT_ID) returning *
一个选项是先select子查询中的下一个序列:
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 |
我有一个 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');
insert into table_name (id, name) values (NEXT_ID, 'http://example.com/' + NEXT_ID) returning *
一个选项是先select子查询中的下一个序列:
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 |