2016-07-28 15 views
2

다중 값으로 설정된 DICT가 있습니다.U2 UniVerse : 다중 값 필드 업데이트

Correlatives are illegal for UPDATE, column "Blah" 

가 어떻게 다중 값 필드의 특정 속성을 업데이트 할 수 있습니다 : TCL을 열고, 그리고 UPDATE DICT.FILE SET Blah = 'Y' 문을 수행 할 때, 나는 다음과 같은 오류가 발생합니다?

답변

0

다중 값 데이터베이스의 연관은 기술적으로 SQL에서 상호 작용할 때 다른 테이블로 간주됩니다. 예를 들어 INV와 같은 인보이스 파일이 있고 DICT는 다음과 같습니다.

DICT INV 08:16:43 08-01-16 Page 1 

       Type & 
Field......... Field. Field........ Conversion.. Column......... Output Depth & 
Name.......... Number Definition... Code........ Heading........ Format Assoc.. 

@ID   D 0       INV    10L S 
CustNum  D 1           5R  S 
PartNum  D 2           8R  M LineI 
                     tem 
Quantity  D 3           5R  M LineI 
                     tem 

4 records listed. 
> 

당신은 당신이 당신과 동료가되도록 PARTNUMBER 원하는 @id 것을 지정되지 않기 때문에 PARTNUMBER를 업데이트하려고하는 명령을 사용할 수있게되지 않을 것이다. 그것을 이해하지 않고 암시 적 외래 키 제약 조건을 실패 였으니 예를 들어, 당신은 ...

UPDATE INV SET PartNumber = 123456; 

을 언급하지 않았다.

@ID가 123 인 송장이 있고 PartNumber 및 Quantity를 추가하려는 경우 이와 같은 작업을 수행하기 때문에 UPDATE가 여기에서 사용하려는 명령이 아닐 수도 있습니다.

INSERT INTO INV (@ID, PartNum, Quantity) VALUES (123, 123456, 2); 
당신이 명령을 issueing에 의해 INV (123), PartNum 123456의 수량을 업데이트 할 수 있음을 예상 할 수 여기에서

...

UPDATE INV SET Quantity = 7 WHERE @ID = 123 WHEN PartNum = 123456; 

을하지만 당신은 시도한다면 우주는 불평 것이 LineItem이라는 연관이 없습니다.

업데이트가 진행되는 한, DICT 파일을 실제로 잘 구성하여 예상대로 작동하게해야합니다. 유니버스 SQL 참조 설명서 (사용자, 참조 및 DBA)를 읽는 것이 좋습니다. Here을 찾을 수 있습니다. 즉, 각 MV 협회의 DICT에 PH 레코드가 필요하며 협회가 안정적인지, 불안정한지 (기본값) 또는 KEY가 있는지 이해하고 싶을 것입니다. 그러나 그것은이 운동을위한 약간 깊은 것입니다.

연관 LineItem에 대한 내 DICT에 PH 레코드를 추가했습니다.

DICT INV 08:38:16 08-01-16 Page 1 

       Type & 
Field......... Field. Field........ Conversion.. Column......... Output Depth & 
Name.......... Number Definition... Code........ Heading........ Format Assoc.. 

@ID   D 0       INV    10R S 
CustNum  D 1           5R  S 
PartNum  D 2           8R  M LineI 
                     tem 
Quantity  D 3           5R  M LineI 
                     tem 
LineItem  PH  PartNum 
         Quantity 

5 records listed. 

이제 수량을 예상대로 업데이트 할 수있게되었습니다.

>UPDATE INV SET Quantity = 7 WHERE @ID = 123 WHEN PartNum = 123456; 
UniVerse/SQL: 1 record updated. 
>SELECT @ID, PartNum, Quantity FROM INV WHERE @ID = 123; 
INV....... PartNum. Quantity 

     123  123456   7 

1 records listed. 
> 

이 정보가 도움이되기를 바랍니다.

0

다중 값 필드를 업데이트하는 또 다른 방법은 UniVerse 편집기 ED 명령을 호출하는 것입니다. TCL의 예를 들면 다음과 같습니다

ED FILENAME RECORDID 

는 TCL의 편집기 명령에 대한 자세한 정보를 입력 HELP를 얻으려면.

출처 : Guide to the UniVerse Editor.