यहाँ मेरी वास्तविक दुनिया की समस्या का एक न्यूनतम उदाहरण है:
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
खंड से बाहर निकल सकता हूं ?
db <> यहाँ fiddle
UPDATE
हल करता हूं , लेकिन यह काम नहीं करेगा INSERT
।