【问题标题】:Row count error in the trigger, Postgres. What I doing wrong?触发器 Postgres 中的行计数错误。我做错了什么?
【发布时间】:2020-10-16 16:28:27
【问题描述】:

在触发器下方删除之前。当我尝试创建此触发器时,出现以下错误:

错误:ОШИБКА:语法(接近:“*”)。请指教我做错了什么!

BEGIN
-- Check if it a Root folder
IF OLD.fld_id = 1 THEN
    RAISE EXCEPTION 'RootFolder cant be deleted';
ELSE
    RETURN OLD;
END IF;
  
-- Check if folder has children

DECLARE record_count integer;
SELECT COUNT(*) from "Folders" where parent_id = OLD.fld_id INTO record_count;  -->ERROR
IF record_count > 0 THEN
    RAISE EXCEPTION 'You cant delete folder as it has children';
ELSE
    RETURN OLD;
END IF;

结束;

【问题讨论】:

  • 请发布完整的触发器定义和错误。
  • 您的触发器不仅如发布的那样不完整,它永远不会执行评论下方的任何内容以检查文件夹;到那时它已经终止了。通过引发异常或返回。
  • 是的,你是对的,我们会更正

标签: postgresql select count triggers row


【解决方案1】:

已修复,我已移动声明 DECLARE record_count integer;开始之前

DECLARE record_count integer;
BEGIN
    -- Check if it a Root folder
    IF OLD.fld_id = 1 THEN
        RAISE EXCEPTION 'RootFolder cant be deleted';
    END IF;
      
    -- Check if folder has children
    SELECT COUNT(*) from "Folders" where parent_id = OLD.fld_id INTO record_count;
    IF record_count > 0 THEN
        RAISE EXCEPTION 'You cant delete folder as it has children';
    END IF;
    
    RETURN OLD;
END;
$BODY$;

【讨论】:

    猜你喜欢
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 2023-01-08
    相关资源
    最近更新 更多