এখানে আমার বাস্তব-বিশ্বের সমস্যার একটি ন্যূনতম উদাহরণ:
create table t(id serial primary key, rnd double precision);
অবশ্যই আপনি একটি returning
ধারা সহ সন্নিবেশিত কলামগুলি ফিরিয়ে দিতে পারেন :
with w as (insert into t(rnd) values(random()) returning *)
insert into t(rnd) select random() from w returning *;
/*
| ID | RND |
|----|----------------|
| 9 | 0.203221440315 |
*/
আপনি একটি আক্ষরিক ফিরে আসতে পারেন:
with w as (insert into t(rnd) values(random()) returning *)
insert into t(rnd) select random() from w returning *, 1.0 dummy;
/*
| ID | RND | DUMMY |
|----|----------------|-------|
| 11 | 0.594980469905 | 1 |
*/
তবে আপনি উত্স কলামগুলি ফিরিয়ে দিতে পারবেন না:
with w as (insert into t(rnd) values(random()) returning *)
insert into t(rnd) select random() from w returning *, w.rnd;
/*
ERROR: missing FROM-clause entry for table "w": with w as (insert into t(rnd) values(random()) returning *) insert into t(rnd) select random() from w returning *, w.rnd
*/
w.rnd
চূড়ান্ত returning
ধারাটি থেকে বেরিয়ে আসার কোনও উপায় আছে কি ?
ডিবি <> ফিডল এখানে
UPDATE
আমি একই ধরণের সমস্যার সমাধান করেছি , তবে এটি কার্যকর হবে না INSERT
।