我有一个设置为多值的 DICT。打开 TCL 并执行UPDATE DICT.FILE SET Blah = 'Y'
语句时,出现以下错误:
Correlatives are illegal for UPDATE, column "Blah"
如何更新多值字段中的特定属性?
我有一个设置为多值的 DICT。打开 TCL 并执行UPDATE DICT.FILE SET Blah = 'Y'
语句时,出现以下错误:
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.
>
您将无法使用您尝试更新 PartNumber 的命令,因为您没有指定要与 PartNumber 关联的 @ID。例如,你不会说...
UPDATE INV SET PartNumber = 123456;
..因为它没有意义并且会使隐式外键约束失败。
此外,UPDATE 可能不是您要在此处使用的命令,因为如果您有一张@ID 为 123 的发票并且想要向其中添加 PartNumber 和 Quantity,您可能会想要执行类似的操作。
INSERT INTO INV (@ID, PartNum, Quantity) VALUES (123, 123456, 2);
从这里您可能期望您可以通过发出命令来更新 INV 123、PartNum 123456 的数量...
UPDATE INV SET Quantity = 7 WHERE @ID = 123 WHEN PartNum = 123456;
但是,如果您要尝试,Universe 会抱怨没有称为 LineItem 的关联。
就更新而言,您需要将 DICT 文件组织得井井有条,以使其按预期工作。我建议您阅读 Universe SQL 参考指南(用户、参考和 DBA)。你可以在这里找到那些。简而言之,您需要每个 MV 关联的 DICT 中的 PH 记录,并且您可能想了解您的关联是 STABLE、UNSTABLE(默认)还是具有 KEY。但这对于这个练习来说有点深。
我在我的 DICT 中为 Association 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.
>
我希望这有帮助。
更新多值字段的另一种方法是调用 UniVerse 编辑器ED
命令。例如,在 TCL 中:
ED FILENAME RECORDID
要获取有关编辑器命令的详细信息,请输入HELP
TCL。
来源:UniVerse 编辑器指南。