U2 UniVerse: อัปเดตฟิลด์หลายค่า

ฉันมี DICT ที่ถูกตั้งค่าเป็นหลายค่า เมื่อเปิด TCL และดำเนินการคำสั่ง UPDATE DICT.FILE SET Blah = 'Y' ฉันได้รับข้อผิดพลาดต่อไปนี้:

Correlatives are illegal for UPDATE, column "Blah"

ฉันจะอัปเดตแอตทริบิวต์เฉพาะในช่องหลายค่าได้อย่างไร


person vinco83    schedule 28.07.2016    source แหล่งที่มา


คำตอบ (2)


การเชื่อมโยงในฐานข้อมูลที่มีหลายค่าในทางเทคนิคจะถือว่าเป็นตารางที่แตกต่างกันเมื่อมีการโต้ตอบกับจาก 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 ได้ เนื่องจากคุณไม่ได้ระบุ @ID ใดที่คุณต้องการเชื่อมโยงกับ PartNumber เช่น คุณจะไม่พูดว่า...

UPDATE INV SET PartNumber = 123456;

..เพราะมันไม่สมเหตุสมผลและจะล้มเหลวตามข้อจำกัดของคีย์ต่างประเทศโดยนัย

นอกจากนี้ UPDATE อาจไม่ใช่คำสั่งที่คุณต้องการใช้ที่นี่ เพราะหากคุณมีใบแจ้งหนี้ที่มี @ID เป็น 123 และต้องการเพิ่ม PartNumber และ Volume ลงไป คุณจะต้องดำเนินการดังนี้

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;

แต่ถ้าคุณได้ลองแล้วจักรวาลก็จะบ่นว่าไม่มี Association ที่เรียกว่า LineItem

เท่าที่ UPDATES ดำเนินไป คุณจะต้องมีไฟล์ DICT ของคุณที่ได้รับการจัดระเบียบอย่างดีเพื่อให้มันทำงานได้ตามที่คาดหวัง ฉันอยากจะแนะนำให้คุณอ่านคู่มืออ้างอิง Universe SQL (ผู้ใช้ การอ้างอิง และ DBA) คุณสามารถดูที่นี่ กล่าวโดยสรุป คุณต้องมีบันทึก PH ใน DICT ของคุณสำหรับการเชื่อมโยง MV แต่ละรายการ และคุณอาจต้องการทราบว่าการเชื่อมโยงของคุณมีเสถียรภาพ ไม่เสถียร (ค่าเริ่มต้น) หรือมีคีย์ แต่นั่นจะลึกไปหน่อยสำหรับแบบฝึกหัดนี้

ฉันเพิ่มบันทึก PH ลงใน DICT ของฉันสำหรับ Association LineItem

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

ฉันหวังว่านี่จะช่วยได้.

person Van Amburg    schedule 01.08.2016

อีกวิธีหนึ่งในการอัปเดตฟิลด์ที่มีหลายค่าคือการเรียกใช้โปรแกรมแก้ไข UniVerse คำสั่ง ED ตัวอย่างเช่น ใน TCL:

ED FILENAME RECORDID

หากต้องการรับข้อมูลโดยละเอียดเกี่ยวกับคำสั่ง Editor ให้พิมพ์ HELP ใน TCL

ที่มา: คำแนะนำเกี่ยวกับ UniVerse ผู้แก้ไข.

person Bill Zelenko    schedule 03.10.2017