Function example
-- example of function that triggers when an entry is inserted into a table
-- and manages this data inserting data as needed in another table
CREATE OR REPLACE FUNCTION your_schema.my_function_name(arg1 character varying, data character varying)
RETURNS character varying
LANGUAGE plpgsql
AS $function$
BEGIN
-- check if already exists in the other table
IF
(SELECT COUNT(*) FROM your_schema.other_table WHERE name=arg1) > 0) THEN
RETURN 'Error: 1210. data already exists';
END IF;
-- insert and manage data
INSERT INTO your_schema.other_table (name, data) VALUES (arg1, data);
RETURN 'Success: 1200';
END $function$;
How to Debug in DBeaver
There are two options, logs or break the function with an exception.
If logs are enough, you just write the message to output per console.
RAISE NOTICE 'this is null';
To see logs in DBeaver click here. Then you may execute the function to see the logs.
If you want to break the function runtime with an exception, you write the following instead
RAISE EXCEPTION SQLSTATE '90001' USING MESSAGE = 'error. this already exists';