2017-09-11 3 views
0

Je ne pense pas que ce soit possible ou que cela ait du sens, mais la plupart des gens ici sont beaucoup plus intelligents que moi et ça ne fait jamais de mal de le demander. Est-il possible de créer une table dans une base de données qui est une formule. Je ne veux pas dire une requête. Je veux dire disons que j'ai une table et une des colonnes est "prix" une autre est "quantité" et je voudrais une colonne "coût" pour calculer (prix * quantité) .... comme les données sont importées. Alors que plus tard je peux juste:Colonnes de formule/calcul dans une table de base de données

sélectionner * à partir du tableau;

Si vous me dites que c'est une question stupide, je comprendrai, mais je l'ai eu d'un client interne et j'ai besoin de l'étudier. La base de données avec laquelle je cours est DB2 sur BlueMix.

Répondre

3

Vous pouvez définir la valeur par défaut pour la colonne des coûts comme

ALTER TABLE table-name ALTER COLUMN cost set cost=price*quantity; 

Ou vous pouvez créer un déclencheur comme suit,

db2 create trigger trigger_name after insert on table_name 
for each row mode db2sql begin atomic update tablle_name 
set cost=qty*price; end 
+0

merci Jinesh. J'avais un peu espéré que tu me dises que je suis stupide pour avoir même posé ces questions ..... mais maintenant je dois faire ceci:/merci –

1

Essayez avec des déclencheurs. Vous avez un tutoriel ici: https://www.tutorialspoint.com/db2/db2_triggers.htm

Un déclencheur de base de données est le code de procédure qui est automatiquement exécuté en réponse à certains événements

+0

merci vladatr. J'avais un peu espéré que tu me dises que je suis stupide car même poser ces questions ..... mais maintenant je dois faire ceci:/merci –

1

Vous pouvez utiliser des colonnes calculées pour effectuer une action. Dans les colonnes calculées vous donner la formule par défaut comme

ALTER TABLE <TABLENAME> ADD <COLUMN_NAME> AS (<COLUMN_NAME1> * <COLUMN_NAME2>); 

Ainsi, la requête ci-dessus ne sert que pour une même table u voulez ajouter cette colonne. Si vous voulez ajouter une autre table, il y a plusieurs façons.

Exemple

  1. Transaction (Il cause peut interblocages)
  2. Triggers (il peut causer serveur peut ralentir)
  3. Procédures stockées (instruction d'insertion normale avec l'aide de clause select)
  4. Sans procédure magasin nous pouvons juste interroger avec une instruction d'insertion normale.

Exemple:

CREATE TABLE Cost_Table 
(
Cost int 
); 

INSERT INTO Cost_Table (Cost)<BR> 
SELECT price * quantity FROM Table_name; 

Ceci est optimisée façon. on peut donc utiliser la requête ci-dessus au lieu de trigger. Ainsi, au-dessus de l'utilisation de la requête à l'intérieur de la transaction et de la procédure de stockage.

0

Si vous ne faites pas attention, cela pourrait entraîner une faille de sécurité majeure. Recherchez "injection de code SQL". Mais pour ce faire, un autre chemin peut être d'utiliser EXECUTE IMMEDEATE dans une procédure stockée.