簡體   English   中英

達到觸發參數 function postgreSQL

[英]Reach parameters in trigger function postgreSQL

我正在嘗試在插入之前編寫觸發器以檢查參數是否符合要求。 我嘗試了很多事情,如果我對 d 和 e 的值進行硬編碼,它會按預期工作,並在 e.=d 的情況下引發錯誤。 但是當我用 NEW 變量替換它時它不起作用。 帶有觸發器的表有列 id 和 languagetag_id? 你能告訴我我做錯了什么嗎?

CREATE or replace FUNCTION insert_name() RETURNS trigger AS $insert_name$
declare d int;
declare e int;
    begin  
        d = (select distinct languagetagid from "scheme".table1 as a
                                    left join "scheme".table2 as b on (a.id = b.country_id )
                                    where b.id = NEW.id);
        e = NEW.languagetag_id;                     
    IF ( e != d ) THEN
                RAISE EXCEPTION 'error: % ', e;
    END IF;
    RETURN NULL;
    END;
$insert_name$ LANGUAGE plpgsql;


CREATE TRIGGER insert_name BEFORE INSERT or UPDATE ON "scheme".table
    EXECUTE PROCEDURE insert_name();

要訪問NEWOLD值,必須為每一行而不是整個語句執行觸發器

CREATE TRIGGER insert_name BEFORE INSERT or UPDATE ON "scheme".table
     FOR EACH ROW EXECUTE PROCEDURE insert_name();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM