2015-01-07 3 views
2

데이터베이스에 객체가 몇 개 만들어졌으며 일부 반복 속성을 삭제해야합니다. 내가 실행하는 데 노력하고있어 쿼리는 다음과 같습니다EMC Documentum DQL - 반복 속성을 삭제하는 방법

UPDATE gemp1_product objects REMOVE ingredients[1] WHERE (r_object_id = '08015abd8002cd68') 

하지만 얻을 모두가 folloing 오류 메시지입니다 :

Error querying databse. [DM_QUERY_E_UPDATE_INDEX]error: "UPDATE: Unable to REMOVE tghe attribute ingredients at index 1." [DM_OBJECT_W_DELETE_ATTR_POSITION_ERROR]warning: "attempt to delete non-existent attribute 88"

객체 08015abd8002cd68이 존재하고 내가 데이터베이스에서 볼 수 있습니다. SELECT 및 DELETE와 같은 쿼리는 정상적으로 작동하지만 전체 개체를 삭제하지 않으려합니다.

+0

아래 제안 사항 외에도 웹에서 조금만 검색하면 많은 유용한 블로그 게시물과 토론을 할 수 있습니다. 이 주제는 일반적으로 모든 DCTM 개발자에게 반복되는 성가심입니다. :) – eivamu

+0

Heh는 그렇게 생각하고 어디서나 똑바로 대답을 찾을 수 없습니다. java를 사용하여 SQL 데이터베이스에 액세스 할 수 있는지, 대신 일반 SQL로 이동하는지 확인할 수 있습니다. 감사합니다 : D – Rikku121

+0

어떤 CS 버전이 제공됩니까? – Miki

답변

1

쉬운 방법은 없습니다. 그 이유는 주어진 속성에 대해 여러 반복 속성을 동기화 할 수 있도록 반복 속성이 정렬되기 때문입니다.

  1. 어느은 그래서 순서를 임의로 재생하도록 지정된 위치에 대한 비어, 그리고 또는

  2. 사용하는 여러 DQL 문을 빈 속성을 삭제하는 코드를 변경하는 속성 값을 설정 마지막 하나는 비어 있습니다. 또는
  3. 데이터 모델을 변경하십시오. 하나의 속성을 미리 정의 된 구분 기호가있는 속성 모음으로 사용하십시오.

부품 (1)

UPDATE gemp1_product OBJECTS SET ingredients[1] = '' WHERE ... 

부품 (2) 각각의 인덱스

; 첫 번째 인덱스의 값 + 1을 (를) 찾기 :

SELECT ingredients 
FROM gemp1_product 
WHERE (i_position*-1)-1 = <index+1> 
ENABLE (ROW_BASED) 

를 사용하여 새 쿼리의 값 :

UPDATE gemp1_product OBJECTS SET ingredients[1] = '<value_from_above>' WHERE ... 

는 또한 어떻게 든 DQL을 중첩하여이 작업을 수행 할 수 있어야하지만, 그것이 가치가 없을 수도 있습니다 노력.

0

쿼리 또는 저장소에 문제가 있습니다. 귀하의 속성 이름을 잘못 입력하거나 UPDATE 쿼리에서 잘못된 색인을 사용하고있는 것 같습니다. 당신이 DM_OBJECT_W_DELETE_ATTR_POSITION_ERROR 위해 구글 경우 this link에 볼 수 좀 더 자세한 설명은 :

원인 : 프로그램 (AN 존재하지 않는 속성의 위치를 ​​지정 DeleteAttr 작업을 실행 음수 또는 수보다 더 큰 숫자 중 객체의 속성들).

여기에서 유형이 일관성있는 상태가 아니거나 반복 속성의 너무 큰 색인을 제거하려고 시도했다고 생각할 수 있습니다. 일관성 검사기 작업 및 기타 유사한 작업으로 저장소를 확인 했습니까?

DQL 쿼리로 반복 속성 (sttribute) 값을 제거하는 방법은 처음에는 모르는 인덱스 위치를 지정해야하므로 단일 쿼리에서는 달성 할 수 없습니다.그러나 간단한 스크립트를 작성하거나 삭제할 가치가 크지 않은 경우 수동으로 수행하는 것은 원하는 방식입니다.

+0

조금 신비 스럽다. 올바른 인덱스 값을 찾으려면 API를 사용하고 개체를 덤프하거나 다음 쿼리를 사용하십시오. SELECT (i_position * -1) -1 FROM gemp1_product WHERE ingredients = ... ENABLE (ROW_BASED) – eivamu