2016-07-28 102 views
2

我有一個設置爲多值的DICT。當打開TCL,做一個UPDATE DICT.FILE SET Blah = 'Y'聲明,我得到以下錯誤:U2 UniVerse:更新多值字段

Correlatives are illegal for UPDATE, column "Blah" 

我如何更新多值字段中的特定屬性?

回答

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

您將無法使用你想,因爲你沒有指定你@Id想要什麼到部分號碼是聯想與更新部分號碼的命令。例如,你不會說...

UPDATE INV SET PartNumber = 123456; 

..因爲它沒有意義,並會失敗的隱式外鍵約束。

此外,UPDATE可能不是您想要在此使用的命令,因爲如果您有一個@ID爲123的發票,並且想要添加PartNumber和Quantity,那麼您會想要這樣做。

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的關聯。

至於UPDATES去,你需要有你的DICT文件組織得非常好,讓它按預期工作。我建議你閱讀Universe SQL參考指南(User,Ref和DBA)。你可以找到那些Here。簡而言之,您需要在每個MV協會的DICT中記錄PH記錄,並且您可能想要了解您的關聯是穩定的,不穩定的(默認)還是有鑰匙。但是這對於這個練習來說有點深刻。

我向協會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