stibbs
09/07/2021, 7:21 AMsql
{"hint":null,"message":"null value in column \"invoice_id\" of relation \"jobs\" violates not-null constraint","code":"23502","details":"Failing row contains (...)."}
Anyone willing to help me debug? I'll post the code in a thread cause it's relatively bigstibbs
09/07/2021, 7:22 AMsql
create or replace function new_post(
application_email text,
business_name text,
content_description text,
content_how_to_apply text,
content_who text,
categories text[],
invoice_address text,
invoice_email text,
invoice_purchase_order text,
title text,
job_type text,
job_location text,
remuneration_max int,
remuneration_min int
)
returns void
language plpgsql
as $$
declare
new_user_id bigint;
new_job_id uuid;
new_invoice_id uuid;
begin
-- create public.user record
-- public.user record is required to allow job posts
-- without a specific user registration flow
insert into public.users default values returning id into new_user_id;
-- create job record
insert into public.jobs (
invoice_id,
user_id,
application_email,
business_name,
content_description,
content_how_to_apply,
content_who,
categories,
job_type,
job_location,
remuneration_max,
remuneration_min,
title
) values (
new_invoice_id,
new_user_id,
application_email,
business_name,
content_description,
content_how_to_apply,
content_who,
categories,
job_type,
job_location,
remuneration_max,
remuneration_min,
title
) returning id into new_job_id;
-- create invoice record
insert into public.invoices (
job_id,
user_id,
invoice_address,
invoice_email,
invoice_purchase_order
) values (
new_job_id,
new_user_id,
invoice_address,
invoice_email,
invoice_purchase_order
) returning id into new_invoice_id;
commit;
end; $$
jason-lynx
09/07/2021, 7:28 AMpublic.jobs
is still NULL:
-- create job record
insert into public.jobs (
invoice_id,
you're inserting new_invoice_id
inside this column, and you declared it at the beginning with new_invoice_id uuid
, but because you hadnt assigned any variable to it at that point, it's still NULLjason-lynx
09/07/2021, 7:29 AMinsert into public.jobs (invoice_id ...)
values (
new_invoice_id, -- this is still NULL
...
)
jason-lynx
09/07/2021, 7:30 AMstibbs
09/07/2021, 8:06 AMnew_invoice_id
AFTER it creates the record in public.invoices
?stibbs
09/07/2021, 8:14 AMjason-lynx
09/07/2021, 8:16 AMjason-lynx
09/07/2021, 8:18 AMstibbs
09/07/2021, 8:19 AMstibbs
09/07/2021, 8:19 AMjason-lynx
09/07/2021, 8:21 AMstibbs
09/07/2021, 8:28 AM{"hint":null,"message":"invalid transaction termination","code":"2D000","details":null}
stibbs
09/07/2021, 8:29 AMsql
commit;
end; $$
jason-lynx
09/07/2021, 8:30 AMstibbs
09/07/2021, 8:34 AMstibbs
09/07/2021, 8:35 AMstibbs
09/07/2021, 8:36 AMstibbs
09/07/2021, 9:43 AMsql
create or replace function new_post(
...
out new_user_id bigint,
out new_invoice_id uuid,
out new_job_id uuid
)
...
declare
new_user_id bigint;
new_invoice_id uuid;
new_job_id uuid;
begin
...returning id into new_user_id;
...returning id into new_invoice_id;
...returning id into new_job_id;
jason-lynx
09/07/2021, 9:50 AMjason-lynx
09/07/2021, 9:50 AMstibbs
09/07/2021, 10:37 AMstibbs
09/07/2021, 11:58 AM