Ahoj, ze studijních důvodů si hraju s Oracle a dostal jsem se k nested
tables (hnízděné tabulky). Je mi to celkem jasné až na jednu věc a to kdy
chci provést update nebo delete na všech vhnízděných tabulkách které
splňují nějakou podmínku.
Např. mějme tabulku OSOBY_KONTAKTY.
V této tabulce jsou sloupce:
kontakt_ID
jmeno
kontakt
přičemž kontakt je nested table a obsahuje sloupce: telefon, email.
Když chci změnit data u jednoho kontaktu tak to není problém, udělám to
takto:
Co když bych ale chtěl udělat to (v pravdě nelogicky) , že ve všech
nested tables kde není vyplněn email (je null) budu chtít místo null doplnit
text 'Email not set'
Tohle nefunguje:
UPDATETABLE(SELECT kontakty FROM OSOBY_KONTAKTY)
SET email = 'Email not set'WHERE email ISNULL;
To že to nefunguje je samozřejmě logické a nedivím se tomu, ten select
vrací pro každý záznam tabulku. Ale jak to udělat aby to fungovalo? Tuším
že by to možná šlo nějak řešit pomocí union, kdy bych výsledky
jednotlivých selectů spojil do jedné tabulky na kterou bych pak dělal ten
update/delete. Ale otázka je jak Nebo na to jdu úplně blbě a řeší se to nějak jinak?
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.