Our aim was to create procedure with transaction rollback on error. We tried to compile the given SP and wanted to run it (which should throw error as the primary key (ID field) has the same value in the second INSERT. On encountering the error, the SP should go to savepoint a without committing the first INSERT.
However, we could not handle exceptions with rollback to user-defined SAVEPOINT. The system is throwing error when we try to use ROLLBACK TO SAVEPOINT (mentioned in your manual). Apparently this is a bug as it defies your own example. Please let us know once it is fixed or suggest the alternative at the earliest.
SQL error:
ERROR: syntax error at or near "TO"
LINE 14: ROLLBACK TO SAVEPOINT a; ^
In statement:
CREATE OR REPLACE PROCEDURE transaction_test()
LANGUAGE plpgsql
AS $$
DECLARE
BEGIN
SAVEPOINT a;
insert into public.aocodes(id,cc_id,name,assigned_to,status,entity,created_by)
select 4,4,'101201',8,'Active',1,1;
insert into public.aocodes(id,cc_id,name,assigned_to,status,entity,created_by)
select 4,5,'101201',8,'Active',1,1;
exception
when others then
ROLLBACK TO SAVEPOINT a;
RELEASE SAVEPOINT a;
Commit;
END $$;