今天 bbs里有人问到如何使用 “INSERT…RETURNING” 语句值的问题,目标想使用 array_append 数组函数追加 “INSERT…RETURNING” 返回的值。
目标结果
1 |
francs=> select array_append(array[1,2,3],insert into test_return (id) values (3) returning id); |
备注:当然这是行不通的,因为语法不支持,接下来测试下,看看是否有其它方法。
在介绍之前,先复习下 “INSERT…RETURNING” 的用法。
创建测试表
创建测试表,并测试返回插入的值
1 |
francs=> create table test_return (id int4 primary key,name character(32)); |
备注:上面的结果已经很清晰了, returning 属性不但能返回指定的字段,也能返回插入的整行。且返回的数据类型和插入的数据类型对应。回到开头的问题,如何使用 “INSERT…RETURNING” 语句返回的值呢,
使用 CTE
1 |
francs=> with temp_row as ( |
备注:使用 “WITH QUERY” 语句先保存中间结果到表 temp_row,接下来可以使用 temp_row 的值进行 SELECT ,UPDATE,DELETE,INSERT 操作了。
也能使用 “INSERT…RETURNING” 返回的值插入到另一个表
1 |
francs=> truncate table test_1; |
参考
- http://www.postgresql.org/docs/9.2/static/queries-with.html
- http://www.postgresql.org/docs/9.2/static/sql-insert.html
原创文章,作者:254126420,如若转载,请注明出处:https://blog.ytso.com/237946.html