ฉันมี 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 ได้ เนื่องจากคุณไม่ได้ระบุ @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.
>
ฉันหวังว่านี่จะช่วยได้.
อีกวิธีหนึ่งในการอัปเดตฟิลด์ที่มีหลายค่าคือการเรียกใช้โปรแกรมแก้ไข UniVerse คำสั่ง ED
ตัวอย่างเช่น ใน TCL:
ED FILENAME RECORDID
หากต้องการรับข้อมูลโดยละเอียดเกี่ยวกับคำสั่ง Editor ให้พิมพ์ HELP
ใน TCL
ที่มา: คำแนะนำเกี่ยวกับ UniVerse ผู้แก้ไข.