【发布时间】:2015-02-17 03:20:24
【问题描述】:
这个函数在没有事务块的情况下创建正常。如下所示,我收到以下错误...
错误:输入第 27 行末尾的语法错误:$$ ^ ********** 错误 ********** 错误:输入结束时的语法错误
如果我取出 'COMMIT' 和相应的 'BEGIN' 则运行正常。
这是为什么?
CREATE OR REPLACE FUNCTION ContentDelete (
creatorUserId BIGINT,
toDeleteContentId BIGINT)
RETURNS VOID
AS $$
BEGIN
BEGIN
IF (SELECT EXISTS(SELECT
*
FROM
tbl_content
WHERE
ContentId = toDeleteContentId
AND
UserId = creatorUserId
LIMIT 1) AS "exists")
THEN
DELETE FROM tbl_content WHERE ParentContentId = toDeleteContentId;
DELETE FROM tbl_content WHERE ContentId = toDeleteContentId;
END IF;
COMMIT;
END
$$
LANGUAGE plpgsql;
【问题讨论】:
-
您不能在 Postgres 的函数中使用
commit(或rollback)。函数的调用者需要这样做。
标签: postgresql plpgsql