我是Postgresql newb。
我创建了一个函数来检查INSERT是否尝试在两个不同的表中创建相同的值。
CREATE OR REPLACE FUNCTION check_pids_not_equal()
RETURNS trigger AS
$BODY$
begin
if exists (select *
from cards c , echecks e
where c.pid = e.pid)
then
raise NOTICE 'Must have different PID than entry in cards.pid';
end if;
return null;
end
$BODY$
LANGUAGE plpgsql
我以这种方式分配了触发器:
CREATE TRIGGER check_cards_pids_trigger
BEFORE INSERT OR UPDATE
ON cards
FOR EACH ROW
EXECUTE PROCEDURE check_pids_not_equal();
现在,每当我尝试在Cards表上执行任何记录插入时,我总是得到INSERT 0 0
没有错误消息 - 即使记录显然是缺少列或错误列类型的错误记录。 / p>
关于罪魁祸首的任何想法?另外,如何显示更多错误报告?
答案 0 :(得分:2)
如果要插入记录,则必须return new
,如下所示:
CREATE OR REPLACE FUNCTION check_pids_not_equal()
RETURNS trigger AS
$BODY$
begin
if exists (select * from cards c, echecks e where c.pid = e.pid) then
raise NOTICE 'Must have different PID than entry in cards.pid';
return null;
end if;
return new;
end
$BODY$
LANGUAGE plpgsql