首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >U2 UniVerse:更新多值字段

U2 UniVerse:更新多值字段
EN

Stack Overflow用户
提问于 2016-07-29 00:12:35
回答 2查看 741关注 0票数 2

我有一个被设置为多值的字典。当打开TCL并执行UPDATE DICT.FILE SET Blah = 'Y'语句时,我得到以下错误:

代码语言:javascript
复制
Correlatives are illegal for UPDATE, column "Blah"

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

EN

回答 2

Stack Overflow用户

发布于 2016-08-01 23:41:07

从技术上讲,多值数据库中的关联在与SQL交互时被视为不同的表。例如,假设您有一个名为INV的发票文件,其字典如下所示。

代码语言:javascript
复制
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的命令,因为您没有指定要与PartNumber关联的@ID。例如,你不会说..。

代码语言:javascript
复制
UPDATE INV SET PartNumber = 123456;

..because它没有意义,并且会使隐式外键约束失败。

此外,UPDATE可能不是您想要在这里使用的命令,因为如果您有一张@ID为123的发票,并且想要向其添加PartNumber和数量,则需要执行以下操作。

代码语言:javascript
复制
INSERT INTO INV (@ID, PartNum, Quantity) VALUES (123, 123456, 2);

在这里,您可能希望通过发出以下命令来更新INV123,PartNum 123456的数量...

代码语言:javascript
复制
UPDATE INV SET Quantity = 7 WHERE @ID = 123 WHEN PartNum = 123456;

但是,如果你尝试这样做,宇宙将会抱怨没有一个叫做LineItem的协会。

就更新而言,您需要将您的DICT文件组织得很好,才能使其按预期工作。我建议你阅读Universe参考指南(User,Ref和DBA)。您可以找到这些Here。简而言之,您需要在您的字典中为每个MV协会记录PH记录,并且您可能希望了解您的协会是稳定的、不稳定的(默认)还是有关键字。但对于本练习来说,这有点太深了。

我为协会LineItem在我的判词中加了一张PH唱片。

代码语言:javascript
复制
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.

现在,这允许我按照预期更新数量。

代码语言:javascript
复制
>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.
>

我希望这能帮到你。

票数 1
EN

Stack Overflow用户

发布于 2017-10-03 08:12:50

另一种更新多值字段的方法是调用UniVerse编辑器ED命令。例如,在TCL中:

代码语言:javascript
复制
ED FILENAME RECORDID

要获取编辑器命令的详细信息,请在TCL中键入HELP

来源:Guide to the UniVerse Editor

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38641646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档