¿Cómo en Postgresql dentro de una transacción para obtener valores en una variable, y si SELECCIONAR no devolvió nada, arrojar un error, y si SELECCIONAR devolvió datos, luego usarlos en la transacción?
Me gusta esto:
BEGIN; @activeRounds = SELECT * FROM "rounds" WHERE status = 'active'; if(!@activeRounds) { RAISE ERROR "Has no Active rounds" }; INSERT INTO "bet" (user_id, round_id) VALUES (100, @activeRound[0].id) COMMIT;¿Cómo hacer algo similar en una solicitud dentro de una transacción?
Puede adaptar el siguiente código a la estructura de su tabla:
begin; do $$ declare v int; begin select c1 into v from t1 where k1=1; if not found then raise exception 'no row found'; else insert into t2(c2) values(v); end if; end; $$; commit; Tenga en cuenta la diferencia entre begin; para iniciar una transacción y begin a iniciar un bloque pl/pgSQL.