I’ve having trouble to do a if with select, e.g:
In SQL Server I can do this:
IF NOT EXISTS (SELECT 1 FROM mytable where "name" = 'myname')
BEGIN
/*Do something*/
END
GO
But in postgresql I don’t have any idea how handle this. I’ve tring some ways to do this, but unfortunately I have not success.
Advertisement
Answer
The syntax for an IF in Postgres (or rather PL/pgSQL) is IF ... THEN ... END IF;, so you can use the one you have and replace BEGIN with THEN and END with END IF;. Remove the GO.
IF NOT EXISTS (SELECT *
FROM mytable
WHERE name = 'myname') THEN
...
END IF;
If that code piece is embedded in any PL/pgSQL function, procedure, etc. that’s it. If not, i.e. you want to execute it ad hoc, you need to enclose it in a DO block.
DO
$$
BEGIN
IF NOT EXISTS (SELECT *
FROM mytable
WHERE name = 'myname') THEN
...
END IF;
END;
$$
LANGUAGE plpgsql;