我有一個設置爲多值的DICT。當打開TCL,做一個UPDATE DICT.FILE SET Blah = 'Y'
聲明,我得到以下錯誤:U2 UniVerse:更新多值字段
Correlatives are illegal for UPDATE, column "Blah"
我如何更新多值字段中的特定屬性?
我有一個設置爲多值的DICT。當打開TCL,做一個UPDATE DICT.FILE SET Blah = 'Y'
聲明,我得到以下錯誤:U2 UniVerse:更新多值字段
Correlatives are illegal for UPDATE, column "Blah"
我如何更新多值字段中的特定屬性?
與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.
>
我希望這可以幫助。
更新多值字段的另一種方法是調用UniVerse編輯器ED
命令。例如,在TCL:
ED FILENAME RECORDID
要獲得TCL的編輯器命令的詳細信息,請鍵入HELP
。