create table public.orders (
orderID serial PRIMARY KEY,
orderdate timestamp NOT NULL
);
create table public.orderdetails (
orderdetailID serial PRIMARY KEY,
orderID integer REFERENCES public.orders(orderID),
item varchar(20) NOT NULL,
quantity INTEGER NOT NULL
);
J'ai des tableaux (exemple très simplifié) comme ci-dessus, dans lesquels je veux insérer les détails d'une commande et les détails de la commande en une seule action.
Je connais les transactions et je peux insérer des données à l'aide d'une commande SQL telle que celle décrite ci-dessous :
DO $$
DECLARE inserted_id integer;
BEGIN
INSERT INTO public.orders(orderdate) VALUES (NOW()) RETURNING orderID INTO inserted_id;
INSERT INTO public.orderdetails(orderID, item, quantity)
VALUES (inserted_id, 'Red Widget', 10),
(inserted_id, 'Blue Widget', 5);
END
$$ LANGUAGE plpgsql;
Cependant, dans l'idéal, j'aimerais qu'une requête comme celle qui précède soit une fonction, si possible, plutôt que d'être stockée dans mon application.
Je ne sais pas si j'ai besoin d'une aide financière, mais j'ai besoin d'une aide financière. Si ce que je cherche à faire est considéré comme une mauvaise pratique, merci de m'indiquer quelle autre voie je devrais suivre.
Merci d'avance.