2016-11-16 1 views
1

은 다음과 상관 쿼리를 고려해오라클이 사용하는 쿼리를 상관 스키마 이름

update CASSETTE.DB_NIM_CABLES a 
set(cgb_a, cgb_z) = 
(
    select regexp_substr(name, '[^ ]+', 1, 1) 
     , regexp_substr(name, '[^ ]+', 1, 1) 
    from CASSETTE.DB_NIM_CABLES b 
    where b.id = a.id 
) where REGEXP_COUNT(a.name, '-') = 1; 

이 내가 CASSSETTE 계정을 사용하여 실행하면 작동 있지만 다른과. 왜 이런거야 ?

+0

어떤 종류의 오류가 발생합니까? 다른 계정에서 해당 테이블을 업데이트 할 수있는 적절한 권한이 있습니까? – JSapkota

+0

오류가 발생하지 않습니다. # 행이 업데이트되었음을 ​​알리는 메시지가 표시되지만 보지 않으면 행이 업데이트되지 않습니다. 나는 적절한 특권을 부여했다. – Steef

+0

다른 로그인 세션을 확인하고 변경 사항을 확인하기 전에 커밋하지 않습니까? –

답변

0

아마도 DML을 실행할 다른 사용자 (계정)에 테이블에 대한 UPDATE 및 SELECT 권한이 없기 때문에 발생합니다. 그래서 CASSETTE 사용자는 해당 사용자에게 권한을 부여합니다.

IE, 당신은 OTHERUSER 스키마에서 실행하려는 말, 당신은해야

1

  grant ALL PRIVILEGES on DB_NIM_CABLES to OTHERUSER ; 
을 다음과 같이

2가 권한을 부여 카세트 사용자와 DB에 연결

추신 : 나는 모든 권한을 부여, 그것은 SELECT, INSERT, UPDATE를 제공하기에 충분해야합니다.

이 문서는 OBJECT 권한에 대한 부분을 참조하십시오.

https://docs.oracle.com/database/122/DBSEG/configuring-privilege-and-role-authorization.htm#DBSEG99868

0

중복 테이블, 카세트 스키마와 GTFIBER의 다른 하나 하나가 있었다. 나는 GTFIBER 스키마에서 테이블을 업데이트하고 다른 스키마에서 데이터를 찾고있었습니다. 시간 내 주셔서 감사합니다

관련 문제