Oracleに正確に存在しないIngresの "tbl1からtbl1を更新する"コマンドを複製しようとしています。Oracle - 更新結合 - 非キー保存テーブル
私は "update(select tbl1 join tbl2 ...)"コマンドを使用します。どちらの表にも主キーが定義されていて、はと考えていますが、ORA-01779:非キー保存表にマップする列を変更できません。ここで
は、適切にテーブル定義と、私が実行しようとしている更新を匿名化されています
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;
は、どのように私はOracleは、私が何の一意性違反がないことを満足するだろうというのが私の選択などを定義することができますか?
これは問題を解決するように見えます。それは理にかなっている。 –