Postgres에서는 기존 함수에 매개변수를 추가하거나 제거할 때 텍스트 파일에 저장된 함수를 관리하는 것이 어려울 수 있습니다. 이 문제를 해결하기 위해 매개변수의 수나 유형에 관계없이 특정 이름을 가진 모든 함수를 삭제하는 와일드카드 방법이 존재합니다.
다음 쿼리를 실행하여 다음에 대한 DDL 문을 생성합니다. 특정 이름을 가진 모든 함수 삭제:
SELECT 'DROP FUNCTION ' || oid::regprocedure FROM pg_proc WHERE proname = 'my_function_name' AND pg_function_is_visible(oid);
'my_function_name'을 실제 함수 이름으로 바꿉니다(대소문자를 구분하고 제외). 큰따옴표). 이 쿼리는 함수의 모든 오버로드에 대한 올바른 매개변수 유형이 포함된 DROP FUNCTION 문 목록을 반환합니다.
drop 문을 즉시 실행하려면 PL/pgSQL 함수 생성을 고려하세요. :
CREATE OR REPLACE FUNCTION f_delfunc(_name text, OUT functions_dropped int) LANGUAGE plpgsql AS $func$ DECLARE _sql text; BEGIN SELECT count(*)::int , 'DROP FUNCTION ' || string_agg(oid::regprocedure::text, '; DROP FUNCTION ') FROM pg_catalog.pg_proc WHERE proname = _name AND pg_function_is_visible(oid) INTO functions_dropped, _sql; IF functions_dropped > 0 THEN EXECUTE _sql; END IF; END $func$;
이름이 지정된 모든 함수를 삭제하려면 'my_function_name':
SELECT f_delfunc('my_function_name');
이 함수는 삭제된 함수의 수를 반환합니다.
위 내용은 매개변수를 모르고 PostgreSQL 함수를 안전하게 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!