3
我是Postgresql newb。Postgresql觸發函數似乎阻止插入任何記錄
我創建了一個函數來檢查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();
現在,每當我試圖做卡表記錄的任何插入,我總是得到INSERT 0 0
沒有錯誤信息 - 即使記錄顯然是一個錯誤的記錄,缺少列或錯誤的列類型。
關於罪魁禍首的任何想法?另外,如何顯示更多錯誤報告?
與INSERT固定的問題(我可以插入記錄),但是當我插入表Echecks已經存在一個PID在Cards pid中,插入仍然完成,即觸發器不會阻止插入,並根據需要提出通知。 – runit
不知道你「存在」檢查應該做什麼。無論如何,您可以使用'new.pid'來獲取當前插入記錄的'pid' –
謝謝。我需要使用new.pid關鍵字。我試圖使用cards.pid作爲參考,但隨後您的評論讓我意識到觸發器在插入之前工作。因此,cards.pid還沒有在參考表中。多謝。 – runit