2014-04-11 4 views
0

프로덕션 환경의 테이블을 준비 환경에서 업데이트하려고합니다. 다른 데이터베이스의 데이터를 사용하는 업데이트 문 (아래 단순화 된 버전)을 작성했으며 "이 유형의 명령에 대해 지원되지 않는 데이터베이스 간 액세스"오류가 발생합니다. 다른 데이터베이스의 데이터를 성공적으로 삽입 할 수는 있지만 업데이트 할 수는 없습니다. 어쩌면 이것은 허용되지 않을 수 있습니까? 아래 예제에서 DB1에 로그인했습니다.동일한 서버의 다른 Netezza 데이터베이스에서 테이블을 업데이트 할 수 있습니까?

첫 번째 시도 :

UPDATE DB1..EMPLOYEE e1 
SET e1.name = e2.name, 
    e1.phone = e2.phone 
FROM DB2..EMPLOYEE e2 
WHERE e1.id = e2.id; 

2 차 시도 :

UPDATE DB1..EMPLOYEE e1 
SET e1.name = e2.name, 
    e1.phone = e2.phone 
FROM (select name, phone, id from DB2..EMPLOYEE) e2 
WHERE e1.id = e2.id; 

답변

0

당신이 올바른지, 당신은 당신이 현재 연결되어있는 데이터베이스에 물건을 변경할 수 있습니다.

현재 데이터베이스의 데이터를 변경하기 위해 다른 데이터베이스에서 읽는 교차 데이터베이스 문이 지원되므로 DB1에 연결되어있는 동안이 문이 작동해야합니다.

편집 : 위의 업데이트 문은 DB1의 테이블을 업데이트하므로 DB1에 연결해야합니다.

+0

DB1에 연결된 상태에서 명령문이 작동해야합니까? 당신이 말한 그 밖의 모든 것은 정확하고 데이터베이스 중 하나를 변경 한 후에 실제로 작동하게 만들었으므로 데이터베이스 중 하나가 생성 될 때 일종의 사용 권한이나 설치 오류가 있어야합니다. – Kelly

+0

죄송합니다, 제 대답을 수정하겠습니다. 네, DB1에 연결되어 있습니다. 오류가 발생했을 때 DB1에 연결되어 있습니까? 나는 당신이 오른쪽 db에 연결되어 있지 않을 때 "cross database statement not supported ..."오류가 발생하는 것을 보았습니다. 다른 권한 부여 문제는 일반적으로 다른 오류 메시지를 반환합니다. –

관련 문제