嘗試使用PostgreSQL 資料庫使用Goose 建立函數時,您可能會遇到error:
(pq: unterminated dollar-quoted string at or near "$BODY$ BEGIN LOOP -- first try to update the key UPDATE userslocations SET count = count+1 WHERE userid = user_id AND locationid = location_id; ")
此錯誤是由於SQL 語句中存在分號而導致的。 Goose 期望使用特定註解來註解複雜的語句,包括有分號的語句。
要解決此問題,請如下註解語句:
<code class="sql"> CREATE OR REPLACE FUNCTION add_userlocation(user_id INT, location_id INT) RETURNS VOID AS $BODY$ -- +goose StatementBegin BEGIN LOOP UPDATE userslocations SET count = count+1 WHERE userid = user_id AND locationid = location_id; IF found THEN RETURN; END IF; BEGIN INSERT INTO userslocations(userid,locationid, count) VALUES (user_id, location_id, 1); RETURN; EXCEPTION WHEN unique_violation THEN END; END LOOP; -- +goose StatementEnd END; $BODY$ LANGUAGE plpgsql;</code>
-- goose StatementBegin 和- - goose StatementEnd 註解指示Goose 正確處理語句,防止未終止的美元引號字串問題。
以上是使用 Goose 建立 PostgreSQL 函數時如何修復「未終止的美元引用字串」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!