sql - 如何使用 nextval() 在字符串中插入包含自己 ID 的行
问题描述
我有一个表,其中包含一个包含其自己 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 *
解决方案
一种选择是首先在子查询中选择下一个序列:
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 |
推荐阅读
- c# - 如何设置使用 Database First 生成的 DbContext 的执行策略?
- postgresql - PostgreSQL 中的 Edge NGram 搜索
- c - 普通变量可以保存另一个变量的地址吗?
- php - 使用循环 PHP 5.6 时出现中断、继续和退出问题
- python - 不能多次写入文件。接收 Errno 13 权限被拒绝
- python - 有没有办法按顺序列出所有斐波那契数?
- javascript - 从 amazon-lambda 发送帖子请求时出现问题
- sql-server - 在 SQL Server 中对数据进行子集化后查找行数
- r - 在两个不同数据帧上循环应用的函数
- reactjs - 使用 React 从先前选择返回的数据中填充新的选择选项