J'ai une table appelée SalesOrderDetail et je dois ajouter une colonne appelée "Revenue" qui est la multiplication de deux autres colonnes: UnitPrice et OrderQty.
J'utilise le code suivant:
# creating columns revenue
ALTER TABLE SalesOrderDetail
ADD revenue DOUBLE NOT NULL;
# insert the revenues into the revenue column
INSERT INTO SalesOrderDetail(revenue)
SELECT UnitPrice*OrderQty
FROM SalesOrderDetail;
mais j'obtiens l'erreur: Code d'erreur: 1048. La colonne «revenus» ne peut pas être nulle
Pourquoi le revenu de la colonne s'avère-t-il nul? J'ai essayé de multiplier les deux colonnes avant et j'ai obtenu les résultats attendus, donc cela doit être quelque chose dans le code. Merci!
Ajoutez la colonne en tant que colonne calculée:
ALTER TABLE SalesOrderDetail
ADD revenue NUMERIC(20, 4) GENERATED ALWAYS AS (UnitPrice*OrderQty) VIRTUAL;
Il est ensuite calculé lorsque la valeur est utilisée dans une requête.
Notez que cela utilise un NUMERIC
type au lieu d'un nombre à virgule flottante. Utilisez toujours NUMERIC
/ DECIMAL
pour les montants monétaires.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots