suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Nur neue Einträge: Kürzlich hinzugefügte Felder aktualisieren

Ich versuche, eine Möglichkeit zu finden, den Einheitencode für jedes neue Einheitenprodukt zu aktualisieren, aber den ursprünglichen Einheitencode für bereits erstellte Einheitenprodukte beizubehalten.

Das heißt, wenn sich der Einheitencode zwischen den bereitgestellten Themen ändert, möchte ich, dass der Einheitencode den genauen Code zum Zeitpunkt der Erstellung des Einheitskurses widerspiegelt.

Das ist mein Formular

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)
);

Ich kann es mit der aktuellen gespeicherten Prozedur aktualisieren, aber wenn ich die Einheitenprodukte und Einheitendetails aufliste, spiegelt es den neuen Einheitencode wider, nicht den Code, der in der Datenbank war, als das Produkt erstellt wurde.

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

Dies ist die Select-Anweisung, die ich beim Erstellen der Liste verwende.

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;

Ich bin mir nicht sicher, ob das tatsächlich möglich ist. Wenn das Sinn macht, bin ich mir nicht sicher, ob etwas mit der Einrichtung meiner Tabelle, der Update-Anweisung oder der List-Anweisung nicht stimmt.

Jede Hilfe wäre sehr dankbar. Ich habe versucht, in der Dokumentation nachzuschauen, wie das geht, konnte aber nicht das richtige Schlüsselwort finden.

Hier sind Beispiele dessen, was ich gerne auflisten könnte. In diesem Beispiel möchte ich, was angezeigt werden soll, wenn sich der Einheitencode nach Ende des Jahres 2021 ändert.

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

P粉148782096P粉148782096263 Tage vor515

Antworte allen(1)Ich werde antworten

  • P粉463840170

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

    有两种可能的方法:

    1. 在 UnitsOffering 中创建新记录时,将 UnitCode 值物理写入记录(在新列中),而不是通过 FK 链接到 Units 表中的值
    2. 重新设计单位表,使其保存历史记录,例如所有更改都被视为插入,而不是更新,并且每个记录都有开始/结束日期(或用于识别记录何时为当前版本的某种其他机制)。然后需要有逻辑来确保将正确的值写入 UnitsOffering.UOUnits

    Antwort
    0
  • StornierenAntwort