U2 UniVerse: perbarui bidang multinilai

Saya memiliki DICT yang ditetapkan sebagai multinilai. Saat membuka TCL, dan melakukan pernyataan UPDATE DICT.FILE SET Blah = 'Y', saya mendapatkan kesalahan berikut:

Correlatives are illegal for UPDATE, column "Blah"

Bagaimana cara memperbarui atribut tertentu di bidang multinilai?


person vinco83    schedule 28.07.2016    source sumber


Jawaban (2)


Asosiasi dalam database multinilai secara teknis dianggap sebagai tabel yang berbeda ketika berinteraksi dengan SQL. Misalnya Anda memiliki file Faktur bernama INV, dengan DICT yang terlihat seperti ini.

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

Anda tidak akan dapat menggunakan perintah yang Anda coba perbarui PartNumber karena Anda tidak menentukan @ID apa yang ingin Anda kaitkan dengan PartNumber tersebut. Misalnya, Anda tidak akan mengatakan...

UPDATE INV SET PartNumber = 123456;

..karena tidak masuk akal dan akan menggagalkan batasan kunci asing implisit.

Selain itu UPDATE mungkin bukan perintah yang ingin Anda gunakan di sini, karena jika Anda memiliki faktur dengan @ID 123 dan ingin menambahkan PartNumber dan Quantity ke dalamnya, Anda ingin melakukan hal seperti ini.

INSERT INTO INV (@ID, PartNum, Quantity) VALUES (123, 123456, 2);

Dari sini Anda mungkin berharap dapat memperbarui Kuantitas INV 123, PartNum 123456 dengan mengeluarkan perintah...

UPDATE INV SET Quantity = 7 WHERE @ID = 123 WHEN PartNum = 123456;

Tetapi jika Anda mencobanya, Universe akan mengeluh bahwa tidak ada Asosiasi yang disebut LineItem.

Sejauh UPDATES berjalan, Anda harus mengatur file DICT Anda dengan sangat baik agar dapat berfungsi seperti yang diharapkan. Saya akan merekomendasikan Anda membaca panduan Referensi Universe SQL (Pengguna, Referensi dan DBA). Anda dapat menemukannya Di sini. Singkatnya, Anda memerlukan catatan PH di DICT Anda untuk setiap Asosiasi MV dan Anda mungkin ingin memahami apakah asosiasi Anda STABIL, TIDAK STABIL (Default) atau memiliki KUNCI. Tapi itu agak mendalam untuk latihan ini.

Saya menambahkan data PH ke DICT saya untuk 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.

Dan sekarang ini memungkinkan saya memperbarui kuantitas seperti yang diharapkan.

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

Semoga membantu.

person Van Amburg    schedule 01.08.2016

Cara lain untuk memperbarui bidang multinilai adalah dengan menjalankan editor UniVerse, perintah ED. Misalnya, di TCL:

ED FILENAME RECORDID

Untuk mendapatkan info detail tentang perintah Editor, ketik HELP di TCL.

Sumber: Panduan ke UniVerse Penyunting.

person Bill Zelenko    schedule 03.10.2017