I have a query to insert an event in database only if external references (user, session) already exists.
- If user doesn't exists it gets inserted and id should be saved
- If sessions doesn't exists it is inserted with previous id from user
- inserts event using userid and sessions id previously created.
.I get this error:
"PHP Warning: pg_query_params(): Query failed: ERROR: syntax error at or near "IF"
for this query:
BEGIN;
SELECT id FROM users WHERE mongoid = $1 (userid);
IF not found THEN
-- inserts user and should remember userid
INSERT INTO users (mongoid, shopid, idinshop, attributes)
VALUES ($1, $2, $3, $4) RETURNING id (userid);
END IF;
--looks for session and should remember sessionid
SELECT id FROM sessions WHERE mongoid = $5 (sessionid);
IF not found THEN
-- inserts session
INSERT INTO sessions (mongoid, shopid, userid, session, traffic, counts)
VALUES ($5, $2, (userid), $6, $7, $8) RETURNING id (sessionid);
END IF;
-- finally inserts the event
INSERT INTO events (shopid, sessionid, userid, type, attributes, mongoid)
VALUES ($2, (sessionid), (userid), $9, $10, $11);
COMMIT;
LATER EDIT: I solve the issue using the answer below!