Rumah  >  Soal Jawab  >  teks badan

Entri baharu sahaja: Kemas kini medan yang ditambah baru-baru ini

Saya cuba mencari cara untuk dapat mengemas kini kod unit untuk mana-mana produk unit baharu, tetapi simpan kod unit asal untuk produk unit yang telah dibuat.

Iaitu, jika kod unit bertukar antara topik yang disediakan, saya mahu kod unit mencerminkan kod yang tepat pada masa kursus unit dibuat.

Ini borang saya

CREATE TABLE Units (
    UnitsID                 INT(10) AUTO_INCREMENT,
    UnitsName               VARCHAR(255) NOT NULL,
    UnitsCode               VARCHAR(20) NOT NULL UNIQUE,
    PRIMARY KEY (UnitsID)
);

CREATE TABLE UnitsOffering (
    UOfferingID             INT(10) AUTO_INCREMENT,
    UOUnits                 INT(10) NOT NULL, 
    YIIntake                VARCHAR(255) NOT NULL,
    YIYear                  INT(4) NOT NULL,  
    PRIMARY KEY             (UOfferingID),
    FOREIGN KEY             (UOUnits) REFERENCES Units(UnitsID)
);

Saya boleh mengemas kininya menggunakan prosedur tersimpan semasa, tetapi apabila saya menyenaraikan produk unit dan butiran unit, ia mencerminkan kod unit baharu, bukan kod yang ada dalam pangkalan data semasa produk dibuat.

CREATE PROCEDURE UpdateUnit(IN vUnitsID VARCHAR (255), IN vUnitsCode VARCHAR (20))
BEGIN
UPDATE Units 
SET UnitsCode = vUnitsCode
WHERE UnitsID = vUnitsID;
 END;

Ini adalah pernyataan pilihan yang saya gunakan semasa membuat senarai.

SELECT  O.UOfferingID, U.UnitsCode, U.UnitsName, O.YIIntake, O.YIYear
        FROM (UnitsOffering O
        INNER JOIN Units U
        ON  O.UOUnits = U.UnitsID)
        ORDER BY O.UOfferingID;

Saya tidak pasti sama ada ini sebenarnya boleh dilakukan. Jika itu masuk akal, saya tidak pasti sama ada terdapat sesuatu yang salah dengan cara jadual saya disediakan, pernyataan kemas kini atau pernyataan senarai.

Sebarang bantuan amat kami hargai. Saya cuba melihat beberapa dokumentasi untuk melihat cara melakukan ini tetapi tidak menemui kata kunci yang betul.

Berikut adalah contoh perkara yang saya harap dapat saya senaraikan. Untuk contoh ini, perkara yang saya mahu ia paparkan jika kod unit berubah selepas 2021 berakhir.

COS10000 - Introduction to Programming - Semester 2 2021
INF30011 - Database Implementation -  Semester 1 2022
COS10059 - Introduction to Programming  - Semester 2 2022

P粉148782096P粉148782096181 hari yang lalu400

membalas semua(1)saya akan balas

  • P粉463840170

    P粉4638401702024-04-03 16:16:54

    Terdapat dua kaedah yang mungkin:

    1. Apabila mencipta rekod baharu dalam UnitsOffering, tulis secara fizikal nilai UnitCode pada rekod (dalam lajur baharu) dan bukannya memautkan kepada nilai dalam jadual Unit melalui FK
    2. Reka bentuk semula jadual unit supaya ia menyimpan sejarah, cth. semua perubahan dianggap sebagai sisipan, bukan kemas kini, dan setiap rekod mempunyai tarikh mula/tamat (atau cara lain untuk mengenal pasti apabila rekod adalah mekanisme semasa). Maka perlu ada logik untuk memastikan nilai yang betul ditulis ke UnitsOffering.UOUnits

    balas
    0
  • Batalbalas