博客
关于我
Postgres用returning实现mysql的last_insert_id
阅读量:800 次
发布时间:2023-03-03

本文共 1833 字,大约阅读时间需要 6 分钟。

PostgreSQL插入操作返回结果的扩展使用

在数据库开发中,了解不同数据库系统的特点对于日常工作至关重要。PostgreSQL在这方面展现了其强大的扩展性和灵活性。在插入操作时,可以选择返回新生成的主键值或其他相关数据,这对于开发人员来说是一个非常有用的功能。


示例

以下是PostgreSQL中插入操作返回结果的基本示例:

postgres=# create table t_kenyon(id int,vname varchar(30),remark text);CREATE TABLEpostgres=# insert into t_kenyon(id,vname) values(1,'test_kenyon') returning id;id----  1(1 row)INSERT 0 1postgres=# insert into t_kenyon(id,vname) select generate_series(1,5),'Kenyon here' returning id;id ----  1  2  3  4  5(5 rows)INSERT 0 5

扩展

PostgreSQL的插入操作提供了更高的灵活性,以下是几种常见的使用场景:

a. 返回更多的insert内容

可以通过生成序列插入多个记录,并返回新生成的主键值:

postgres=# insert into t_kenyon(id,vname) select generate_series(6,8),'Kenyon here' returning id;id |    vname    ----+-------------  6 | Kenyon here  7 | Kenyon here  8 | Kenyon here(3 rows)INSERT 0 3postgres=# insert into t_kenyon(id,vname,remark) select generate_series(9,11),'Kenyon here','KENYON GOOD BOY!' returning *;id |    vname    |      remark      ----+-------------+------------------  9 | Kenyon here | KENYON GOOD BOY! 10 | Kenyon here | KENYON GOOD BOY! 11 | Kenyon here | KENYON GOOD BOY!(3 rows)INSERT 0 3

b. 返回delete掉的数据

在删除数据时,可以选择返回被删除的记录:

postgres=# delete from t_kenyon where id >9 returning id,vname;id |    vname    ----+------------- 10 | Kenyon here11 | Kenyon here(2 rows)DELETE 2postgres=# delete from t_kenyon where id <5 returning *;id |    vname    | remark ----+-------------+---------  1 | test_kenyon |   2 | Kenyon here |   3 | Kenyon here |   4 | Kenyon here | (5 rows)DELETE 5

c. 返回update掉的数据

在更新数据时,可以选择返回被修改的记录:

postgres=# update t_kenyon set remark = 'kenyon bad boy!' where id <7 returning id,remark;id |     remark      ----+-----------------  5 | kenyon bad boy!  6 | kenyon bad boy!(2 rows)UPDATE 2

总结

PostgreSQL的插入操作功能强大,支持返回新生成的主键值或其他相关数据,这使得数据处理更加灵活。通过生成序列等工具,可以一次性插入多个记录,同时控制返回的数据量。这些功能对于日常开发中复杂的数据处理场景非常有用。

转载地址:http://jvxfk.baihongyu.com/

你可能感兴趣的文章
plotloss记录
查看>>
Plotly (Python) 子图:填充构面和共享图例
查看>>
Plotly 中的行悬停文本
查看>>
Plotly 停用 x 轴排序
查看>>
Plotly 域变量解释(多图)
查看>>
Plotly 绘制表面 3D 未显示
查看>>
Plotly-Dash 存在未知问题并创建“加载依赖项时出错“;通过使用 Python-pandas.date_range
查看>>
Plotly-Dash:如何过滤具有多个数据框列的仪表板?
查看>>
Plotly:如何为 x 轴上的时间序列设置主要刻度线/网格线的值?
查看>>
Plotly:如何从 x 轴删除空日期?
查看>>
Plotly:如何从单条迹线制作堆积条形图?
查看>>
Plotly:如何以 Root 样式绘制直方图,仅显示直方图的轮廓?
查看>>
Plotly:如何使用 Plotly Express 组合散点图和线图?
查看>>
Plotly:如何使用 plotly.graph_objects 和 plotly.express 定义图形中的颜色?
查看>>
Plotly:如何使用 Python 对绘图对象条形图进行颜色编码?
查看>>
Plotly:如何使用 updatemenus 更新一个特定的跟踪?
查看>>
Plotly:如何使用长格式或宽格式的 pandas 数据框制作线图?
查看>>
Plotly:如何向烛台图添加交易量
查看>>
Plotly:如何在 plotly express 中找到趋势线的系数?
查看>>
Plotly:如何在桑基图中设置节点位置?
查看>>