我在数据库中发现了一个名为num
的神秘表,该表有一个名为count
的列。我不知道它是怎么到达那里的,然后我意识到这可能是由触发异常的行为引起的。
我有一个触发功能:
DECLARE num integer := 0;
BEGIN
IF ... THEN
SELECT COUNT(*) INTO num FROM ...
END IF;
IF num > 1 THEN
DELETE FROM ...
END IF;
RETURN NEW;
END;
如您所见,我的目的是对查询返回的行进行计数,如果大于1则执行一些操作。
此错误代码可以对创建的有害表负责吗?如果是这样,该如何解决?
答案 0 :(得分:0)
SELECT ... INTO
foo
将SELECT
的结果存储在PL / pgSQL变量foo
中。 SELECT ... INTO
foo
作为普通SQL语句运行,而创建表foo
来存储结果。
这是造成混乱的原因,该表是在我针对DB手动测试触发器功能的SQL语句时创建的。