gpt4 book ai didi

postgresql - 创建函数未终止的美元引号字符串

转载 作者:IT老高 更新时间:2023-10-28 13:09:54 26 4
gpt4 key购买 nike

我正在尝试用 Goose 创建这个函数使用 postgres ( pq lib ) 数据库。

我的代码如下:

   CREATE OR REPLACE FUNCTION add_userlocation(user_id INT, location_id INT) RETURNS VOID AS
$BODY$
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;
END;
$BODY$
LANGUAGE plpgsql;

当我尝试 goose up 时,它提供了一个错误:

(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;
"), quitting migration.

Goose 基本上回显了 pq 库错误,所以我不认为它在 Goose 中,而是在 pq-library 中。查询在 pgAdmin III 上运行成功。

最佳答案

根据goose documentation , 包含分号的复杂语句必须使用 -- +goose StatementBegin-- +goose StatementEnd

进行注释

您的语句包含嵌入其中的分号,因此您需要使用这些注释。否则 goose 会破坏 SQL,从而导致 libpq 出错。

关于postgresql - 创建函数未终止的美元引号字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20934544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com