코린이 Oracle ORA-01779 다중 테이블 Update 질문

코린이 Oracle ORA-01779 다중 테이블 Update 질문

작성일 2022.04.08댓글 2건
    게시물 수정 , 삭제는 로그인 필요

아래 코드처럼 테이블 생성후

-- 테이블 생성
CREATE TABLE phosk_category(
branch_num          varchar2(12),
category_num    number(3) CONSTRAINT pk_phosk_category_num PRIMARY KEY,
category_name   varchar2(20)
);

CREATE TABLE phosk_item(
category_num        number(3),
item_num            number(3) CONSTRAINT pk_phosk_item_num PRIMARY KEY,
item_name           varchar2(25),
item_image          varchar2(30),
item_info           VARCHAR2(1000),
item_lastDate       date,
item_regiDate       date,
CONSTRAINT FK_phosk_item_category_num Foreign Key(category_num) REFERENCES phosk_category(category_num)ON DELETE CASCADE
);

CREATE TABLE phosk_basicOption(
item_num    number(3),
basic_option   varchar2(6) NOT NULL,
basic_price    number(6) NOT NULL,
CONSTRAINT FK_phosk_bo_basic_item_num Foreign Key(item_num) REFERENCES phosk_item(item_num)ON DELETE CASCADE
);

CREATE TABLE phosk_addOption(
item_num    number(3),
add_option     varchar2(20) NOT NULL,
add_price      number(4) NOT NULL,

CONSTRAINT FK_phosk_bo_add_item_num Foreign Key(item_num) REFERENCES phosk_item(item_num)ON DELETE CASCADE
);

위 코드 처럼 테이블 생성후에

아래 코드로 다중 업데이트 하려니 오류가 키보존 오류가 뜹니다
/*+ BYPASS_UJVC */ 사용해도 같은 오류가 발생하고
category - item 만 조인후 update했을땐 update가 되고
item - option 연결했을때 ORA-01779 오류가 발생합니다

코린이라 제약조건을 잘못 걸려있는지 혹은 update 문이 잘못되었는지 알려주실수 있을까요 ㅠㅠ

이제 막 5개월 배운 코린이라 db쪽은 너무 어렵네여 ㅠㅠ

update (select pc.branch_num, pc.category_num, pc.category_name,
pi.item_num, pi.item_name, pi.item_image, pi.item_info, pi.item_lastDate, pi.item_regiDate,
pb.basic_option1, pb.basic_option2, pb.basic_option3, pb.basic_option4,
        pb.basic_price1, pb.basic_price2, pb.basic_price3, pb.basic_price4,
        pa.add_option1, pa.add_option2, pa.add_option3, pa.add_option4, pa.add_option5,
        pa.add_price1, pa.add_price2, pa.add_price3, pa.add_price4, pa.add_price5
        from phosk_category pc INNER JOIN phosk_item pi ON (pc.category_num = pi.category_num)
        INNER JOIN phosk_basicoption pb on (pi.item_num = pb.item_num)
        INNER JOIN phosk_addOption pa on (pi.item_num = pa.item_num)
        ) set item_name = '볶음밥';



profile_image 익명 작성일 -

1:n 관계 등에 의해서 변경할 1건을 정확히 구별하지 못하게 SQL이 구성되어서 그렇습니다.

문제가 발생되는 option 조인 시 기존 데이터 집합과 조인키로 1:1관계가 되게 만들고 나서 조인 해 보세요.

건승하시길~

profile_image 익명 작성일 -

옵션의 item_num를 PK로 설정하고 해보세요.

다중 update 쿼리 질문 입니다.

... Table_A 테이블을 수정하려합니다. 로직에서 for 문을 이용한 다중의 트렌젝션을 일으키지 않고 update 한번으로 가능한지, 가능하면 쿼리...

오라클 멀티UPDATE 질문드려요

update (select a.edu_code as a_edu_code, a.st_code as a_st_code, b.edu_code as b_edu_code... 경우 'ora-01779- 키 보존된 것이 아닌 테이블로 대응한 열을 수정할...

oracle CLOB insert, update 관련

... oracle clob데이터타입 처리관련하여 질문좀... (생략) execute immediate 'update ' || p_dbo || '.MESG01... 그 이상은 임시방편으로 테이블 컬럼을 추가한 후 그곳에...

오라클 질문 입니다(db인스턴스...

... 테이블을 만들고, 거기에 행(Row)을 INSERT하고 UPDATE하고 또 SELECT할때 그 정보들의 저장공간이 Tablespace입니다. 이것은 System관리자(Oracle관...

자주 등장하는 오라클 에러 20...

... 임시 테이블 잠금 수가 초과했습니다" 00058,0, "이... 00097,0, "Oracle SQL 기능에서 사용하고 있는것이 SQL92... 2000이상인 다중 버퍼" 01027,0, "데이타 정의에서는...

mssql과 php연동할때 ... (완전기초)

... 어디에 하소연할데도 없어서 이곳에 질문 올립니다..... 솔직하게 테이블은 만들었구요! 그다음에 쿼리문도... (참고로 쿼리부분도 select delete update 이정도의...