2016-07-28 4 views
2

Ich habe ein DICT, das als mehrwertiger Wert eingestellt ist. Wenn TCL öffnen und dabei eine UPDATE DICT.FILE SET Blah = 'Y' Aussage, ich die folgende Fehlermeldung erhalten:U2 UniVerse: aktualisiere ein mehrwertiges Feld

Correlatives are illegal for UPDATE, column "Blah" 

Wie kann ich ein bestimmtes Attribut in einem mehrwertig Feld aktualisieren?

Antwort

0

Assoziationen in einer mehrwertigen Datenbank werden technisch als eine andere Tabelle angesehen, wenn mit SQL interagiert wird. Angenommen, Sie haben eine Invoice-Datei namens INV mit einem DICT, das so aussieht.

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. 
> 

Sie würden nicht in der Lage sein, den Befehl verwenden Sie den Part versuchen, zu aktualisieren, weil Sie nicht angeben, was @id Sie zum Part mit sein wollen assoziieren. Zum Beispiel würde man nicht sagen ...

UPDATE INV SET PartNumber = 123456; 

..because es macht keinen Sinn und würde die impliziten Fremdschlüssel fehlschlagen.

Zusätzlich UPDATE möglicherweise nicht der Befehl, den Sie hier verwenden möchten, denn wenn Sie eine Rechnung mit einer @ID von 123 haben und eine PartNumber und eine Menge hinzufügen möchten, möchten Sie so etwas tun.

INSERT INTO INV (@ID, PartNum, Quantity) VALUES (123, 123456, 2); 

Von hier hat man vielleicht erwarten, dass Sie die Anzahl der INV aktualisieren 123, TEILNUM 123456 durch den Befehl Verlegerung ...

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

Aber wenn Sie versuchen, waren das Universum wird sich beschweren, dass es ist keine Assoziation namens LineItem.

Soweit UPDATES gehen, müssen Sie Ihre DICT-Datei wirklich gut organisiert haben, damit es wie erwartet funktioniert. Ich würde empfehlen, dass Sie die Universe SQL Reference-Handbücher (User, Ref und DBA) lesen. Sie können diese Here finden. Kurz gesagt, Sie benötigen PH-Datensätze in Ihren DICTs für jede MV Association und Sie werden wahrscheinlich verstehen wollen, ob Ihre Assoziation STABLE, UNSTABLE (Standard) ist oder einen KEY hat. Aber das ist ein bisschen tief für diese Übung.

Ich fügte meinem DICT einen PH-Datensatz für das Association LineItem hinzu.

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. 

Und dies ermöglicht mir jetzt, die Menge wie erwartet zu aktualisieren.

>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. 
> 

Ich hoffe, das hilft.

0

Eine weitere Möglichkeit, mehrwertige Felder zu aktualisieren, besteht darin, den Befehl UniVerse-Editor ED aufzurufen. Zum Beispiel in TCL:

ED FILENAME RECORDID 

detaillierte Informationen über den Editor-Befehle zu erhalten, geben Sie HELP in TCL.

Quelle: Guide to the UniVerse Editor.

Verwandte Themen