仅当外部引用(用户、会话)已经存在时,我才有查询要在数据库中插入事件。
- 如果用户不存在,它会被插入并且应该保存 id
- 如果会话不存在,则使用用户先前的 id 插入它
- 使用先前创建的用户 ID 和会话 ID 插入事件。
.我得到这个错误:
“PHP 警告:pg_query_params():查询失败:错误:在“IF”处或附近出现语法错误
对于这个查询:
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;
稍后编辑:我使用下面的答案解决了这个问题!