Sto tentando di replicare un comando "update tbl1 from tbl2" di Ingres, che non esiste esattamente in Oracle.Oracle - aggiornamento join - tabella non protetta da chiavi
Quindi utilizzo il comando "aggiorna (seleziona tbl1 join tbl2 ...)". Entrambe le tabelle hanno le chiavi primarie definite e I ha pensato che il mio join identificasse in modo univoco le righe, ma sto ancora ottenendo "ORA-01779: impossibile modificare una colonna che esegue il mapping su una tabella non conservata con chiave".
Qui sono opportunamente anonimi definizioni di tabella e l'aggiornamento sto cercando di eseguire:
CREATE TABLE tbl1
(
ID decimal(11) NOT NULL,
A varchar2(3) NOT NULL,
B float(7),
CONSTRAINT tbl1_pk PRIMARY KEY (ID,A)
)
;
CREATE TABLE tbl2
(
ID decimal(11) NOT NULL,
A varchar2(3) NOT NULL,
B float(15),
C float(15),
D char(1) NOT NULL,
CONSTRAINT tbl2_PK PRIMARY KEY (ID,A,D)
)
;
UPDATE
(select tbl1.b, tbl2.c
from tbl1 inner join tbl2
on tbl1.id=tbl2.id
and tbl1.a=tbl2.a
and tbl1.b=tbl2.b
and tbl1.a='foo'
and tbl2.D='a')
set b=c;
Come posso definire il mio selezionare in modo tale che Oracle sarà soddisfatto che non ho violazioni unicità?
Questo sembra risolvere il problema - e grazie per l'ulteriore spiegazione. Ha senso. –