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.