ORACLE UPDATE JOIN TABLE 的問題! |
尚未結案
|
Sanyuan
一般會員 發表:24 回覆:32 積分:11 註冊:2002-06-23 發送簡訊給我 |
小弟在ORACLE 8.1.7
兩個TABLE JOIN 後要UPDATE
所以下了下面的SQL
卻出現錯誤
請教各位是否有解(join所選擇的欄位,各是兩個TABLE的P.KEY)
==============================
SQL> update (select fa2.month fa2_month ,
2 fa2.type fa2_type,
3 fa2.item fa2_item,
4 fa2.no fa2_no ,
5 ttl2.month ttl2_month,
6 ttl2.type ttl2_type ,
7 ttl2.item ttl2_item ,
8 ttl2.no ttl2_no
9 from fa2 , ttl2
10 where fa2.no = ttl2.no
11 and fa2.month = '9301'
12 and fa2.type = '0'
13 and fa2.item = '02'
14 and fa2.no is not null )
15 set ttl2_no = dtlfa2_no ;
set ttl2_no = fa2_no
*
第 15 行發生錯誤:
ORA-01779: 無法修改對映非保留鍵表的資料欄
===========================================
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
Sanyuan
一般會員 發表:24 回覆:32 積分:11 註冊:2002-06-23 發送簡訊給我 |
謝謝Mickey的回答
很抱歉不是寫的很清楚
容我重新闡述一下
T1,T2兩個TABLE,名稱不同,但欄位相同(所以才須alias)
T1與T2是一對多,由b欄位可看出
目的是update T2 set T2.c=T1.c
我做了個範例如下
--------------------------------
create table T1(a int,b int,c int,primary key(a));
insert into T1 values(1,1,888);
insert into T1 values(2,2,777);
insert into T1 values(3,3,666);
create table T2(a int,b int,c int,primary key(a));
insert into T2 values(1,1,1);
insert into T2 values(2,1,1);
insert into T2 values(3,1,1);
insert into T2 values(4,2,1);
insert into T2 values(5,2,1);
--------------------------------
執行下列的SQL可以得到我想要的結果
UPDATE (SELECT T1.a T1a,T1.b T1b,T1.c T1c,T2.a T2a,T2.b T2b,T2.c T2c
FROM T1,T2 WHERE T1.a=T2.b) SET T2c=T1c;
不過很不幸的,實際上,T1,T2的P.Key 各是a,b,c
所以當
create table T1(a int,b int,c int,primary key(a,b,c));
create table T2(a int,b int,c int,primary key(a,b,c));
再執行UPDATE就會出現
ORA-01779: 無法修改對映非保留鍵表的資料欄 不知這樣的思考是否正確? 或Update T2 set T2.c=
(select T1.c from T1 where ....)
也可以?
請指教
|
Sanyuan
一般會員 發表:24 回覆:32 積分:11 註冊:2002-06-23 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |