-- transaction réalisant une commande
--
\set nproduits 2000
\setrandom id_produit 1 :nproduits
\set nclients 10000
\setrandom id_client 1 :nclients
\set nmode_exp 4
\setrandom mode_exp 1 :nmode_exp
\setrandom quantite 1 16
\set nproduits 2000
\setrandom produit_id 1 :nproduits

BEGIN;
WITH nouvelle_commande AS ( INSERT INTO commandes (numero_commande, client_id, date_commande, mode_expedition) VALUES (get_numero_commande(), :id_client, now(), :mode_exp) RETURNING numero_commande) INSERT INTO lignes_commandes (numero_commande, produit_id, fournisseur_id, quantite, prix_unitaire, remise) SELECT numero_commande, produit_id, fournisseur_id, :quantite, prix, 0 FROM nouvelle_commande, LATERAL (SELECT pf.produit_id, pf.fournisseur_id, p.prix FROM produit_fournisseurs pf JOIN produits p USING (produit_id) WHERE p.produit_id = :produit_id LIMIT 1) a;
COMMIT;

