1

Temat: nieobsługiwany UPDATE przez SELECT

Witajcie,
mam pytanie, właśnie doczytałam, że coś takiego:
UPDATE tabv SET (v1,v2,v3) = (SELECT z1,z2,z3 FROM tabz WHERE tabv.v1 = tabz.z1);
nie jest zaimplementowane w PostgrSQL.
Czy jest jakies obejście, czy pozostaje mi zdefiniowac kursory i nimi sie posługiwać?

z góry dzięki za szybką odpowiedź
a.

2

Odp: nieobsługiwany UPDATE przez SELECT

Nie wiem czy o to chodzi ale zalozmy ze mamy dwie tabele t1(i, c1,c2) i t2(i,c1,c2)

>select * from  t1;
 i | c1 | c2
---+----+----
 1 | a  | A
 2 | b  | B
 3 | c  | C
(3 rows)

>select * from t2;
 i |  c1  |  c2
---+------+------
 1 | null | null
 2 | null | null
 4 | null | null
(3 rows)

To po wykonaniu nastepujacego update

>update t2 set c1=t1.c1,c2=t1.c2 from t1 where t1.i=t2.i;
Time: 11,393 ms
(rski@[local]:5432) 12:50:33 [rski]

mamy

>select * from t2;
 i |  c1  |  c2
---+------+------
 4 | null | null
 1 | a    | A
 2 | b    | B
(3 rows)

o to chodzilo, update moze miec klauzule FROM.

3

Odp: nieobsługiwany UPDATE przez SELECT

dzięki ;-)