我有一个被设置为多值的字典。当打开TCL并执行UPDATE DICT.FILE SET Blah = 'Y'语句时,我得到以下错误:
Correlatives are illegal for UPDATE, column "Blah"如何更新多值字段中的特定属性?
发布于 2016-08-01 23:41:07
从技术上讲,多值数据库中的关联在与SQL交互时被视为不同的表。例如,假设您有一个名为INV的发票文件,其字典如下所示。
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。例如,你不会说..。
UPDATE INV SET PartNumber = 123456;..because它没有意义,并且会使隐式外键约束失败。
此外,UPDATE可能不是您想要在这里使用的命令,因为如果您有一张@ID为123的发票,并且想要向其添加PartNumber和数量,则需要执行以下操作。
INSERT INTO INV (@ID, PartNum, Quantity) VALUES (123, 123456, 2);在这里,您可能希望通过发出以下命令来更新INV123,PartNum 123456的数量...
UPDATE INV SET Quantity = 7 WHERE @ID = 123 WHEN PartNum = 123456;但是,如果你尝试这样做,宇宙将会抱怨没有一个叫做LineItem的协会。
就更新而言,您需要将您的DICT文件组织得很好,才能使其按预期工作。我建议你阅读Universe参考指南(User,Ref和DBA)。您可以找到这些Here。简而言之,您需要在您的字典中为每个MV协会记录PH记录,并且您可能希望了解您的协会是稳定的、不稳定的(默认)还是有关键字。但对于本练习来说,这有点太深了。
我为协会LineItem在我的判词中加了一张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.
>我希望这能帮到你。
发布于 2017-10-03 08:12:50
另一种更新多值字段的方法是调用UniVerse编辑器ED命令。例如,在TCL中:
ED FILENAME RECORDID要获取编辑器命令的详细信息,请在TCL中键入HELP。
https://stackoverflow.com/questions/38641646
复制相似问题