我創建了一個功能remove_tables這是如下圖所示EXECUTE失敗未來不會繼續
CREATE OR REPLACE FUNCTION remove_tables (integer)
RETURNS void AS
$BODY$DECLARE
_id ALIAS FOR $1;
BEGIN
EXECUTE 'DROP TABLE something_' || _id || ' CASCADE';
DELETE FROM lot WHERE id = _id ;
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION delete_tables(integer)
OWNER TO postgres;
我的問題是,EXECUTE可能失敗,但我還是想用DELETE語句來進行(DELETE FROM很多WHERE ID = _id;)
我嘗試使用PERFORM'DROP TABLE something_'|| _id || 'CASCADE';但並沒有給我想要什麼
有什麼我可以做,執行一個語句,無論成功還是失敗,而且還與其他發言
你需要一個異常處理程序:HTTP://www.postgresql .ORG /文檔/電流/靜態/ plpgsql- control-structures.html#PLPGSQL-ERROR-TRAPPING(你還需要設置一個保存點,以便在發生錯誤時繼續進行交易) –
好的,謝謝,我試圖捕捉異常並且什麼都不做,看起來不錯對於我需要的 – hghew
如果你想要的是防止錯誤,如果表不存在,使用'drop table if exists ...' –