Nouvelles entrées uniquement : mettre à jour les champs récemment ajoutés
P粉148782096
P粉148782096 2024-04-02 22:48:20
0
1
517

J'essaie de trouver un moyen de pouvoir mettre à jour le code unitaire de tout nouveau produit unitaire, tout en conservant le code unitaire d'origine pour les produits unitaires déjà créés.

Autrement dit, si le code de l'unité change entre les sujets proposés, je souhaite que le code de l'unité reflète le code exact au moment où le cours unitaire a été créé.

Voici mon formulaire

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

Je peux le mettre à jour en utilisant la procédure stockée actuelle, mais lorsque je répertorie les produits unitaires et les détails de l'unité, cela reflète le nouveau code de l'unité, et non le code qui se trouvait dans la base de données lors de la création du produit.

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

C'est l'instruction select que j'utilise lors de la création de la liste.

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;

Je ne sais pas si cela peut réellement être fait. Si cela a du sens, je ne sais pas s'il y a quelque chose qui ne va pas dans la façon dont ma table est configurée, dans l'instruction update ou dans l'instruction list.

Toute aide serait grandement appréciée. J'ai essayé de consulter de la documentation pour voir comment procéder, mais je n'ai pas trouvé le bon mot-clé.

Voici des exemples de ce que j’aimerais pouvoir énumérer. Pour cet exemple, ce que je veux qu'il affiche si le code de l'unité change après la fin de 2021.

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

P粉148782096
P粉148782096

répondre à tous(1)
P粉463840170

Il existe deux méthodes possibles :

  1. Lors de la création d'un nouvel enregistrement dans UnitsOffering, écrivez physiquement la valeur UnitCode dans l'enregistrement (dans une nouvelle colonne) au lieu de créer un lien vers la valeur dans la table Units via FK
  2. Redessinez la table des unités afin qu'elle contienne l'historique, par exemple, toutes les modifications sont traitées comme des insertions, pas des mises à jour, et chaque enregistrement a une date de début/fin (ou un autre moyen d'identifier quand un enregistrement est un mécanisme actuel). Il doit ensuite y avoir une logique pour garantir que la valeur correcte est écrite dans UnitsOffering.UOUnits
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal