복붙노트

[SQL] PostgreSQL의에서 테이블을 참조 목록 저장 기능

SQL

PostgreSQL의에서 테이블을 참조 목록 저장 기능

그냥 빠르고 간단한 질문 : 가능하면 PostgreSQL을에, 어떻게, 그냥 SELECT 문을 사용하여 테이블을 사용하는 모든 저장 기능 / 저장 프로 시저의 이름을 나열합니까? 간단한 SELECT가 부족하면 내가 저장 기능을 수행 할 수 있습니다.

내 질문은, 내 생각이 다른 질문에 다소 비슷하지만, 다른 문제는 SQL Server 2005를위한 것입니다 : 표에서 저장 프로 시저의 목록

그 문제에 대한 (옵션), 당신은 어떻게 동일한 방식으로 동일한 테이블을 사용하는 트리거 및 제약 조건을 나열합니까?

해결법

  1. ==============================

    1.

    SELECT  p.proname
    FROM    pg_catalog.pg_namespace n
    JOIN    pg_catalog.pg_proc p
    ON      p.pronamespace = n.oid
    WHERE   n.nspname = 'public';
    
  2. ==============================

    2.

    SELECT  proname, prosrc
    FROM    pg_catalog.pg_namespace n
    JOIN    pg_catalog.pg_proc p
    ON      pronamespace = n.oid
    WHERE   nspname = 'public';
    
  3. ==============================

    3.당신이 psql 프로그램을 사용하는 경우, \ ​​DF 시도

    당신이 psql 프로그램을 사용하는 경우, \ ​​DF 시도

    남자 페이지에서 :

    Tip
    To look up functions taking arguments or returning values of a specific type, use your pager's search capability to scroll through the \df output.
    

    실행 \ 설정 ECHO_HIDDEN는 무대 뒤에서 실행되는 것을 \ DF 발표 할 예정이다.

  4. ==============================

    4.내가 거기에서 인수 이름을 추가 @quassnoi 및 @davidwhthomas 등을 제외하고 동일 :

    내가 거기에서 인수 이름을 추가 @quassnoi 및 @davidwhthomas 등을 제외하고 동일 :

    SELECT  proname, proargnames, prosrc 
    FROM    pg_catalog.pg_namespace n
    JOIN    pg_catalog.pg_proc p
    ON      pronamespace = n.oid
    WHERE   nspname = 'public';
    

    기능을 나열 뒤에 목적을 정리하는 경우 또는으로 반복 변화 PARAMS리스트와 새로운 기능, 자주 기능을 삭제해야합니다 :

    DROP FUNCTION <name>(<args>);
    

    proargnames을 추가함으로써, 나는 드롭에 적용 할 수있는 함수 이름을 만들 수 있어요.

    또한,이 기능을 평가할 때 더 완전한 그림을 볼 것이 좋다.

  5. ==============================

    5.당신은 (이것은 다른 데이터베이스 시스템에서 동일한 방식으로 작동합니다 그래서, SQL 표준에서의) 데이터베이스에 대한 메타 데이터를 얻을 수있는 표준 INFORMATION_SCHEMA 스키마를 사용할 수 있습니다. 이 경우 information_schema.routines을 원한다.

    당신은 (이것은 다른 데이터베이스 시스템에서 동일한 방식으로 작동합니다 그래서, SQL 표준에서의) 데이터베이스에 대한 메타 데이터를 얻을 수있는 표준 INFORMATION_SCHEMA 스키마를 사용할 수 있습니다. 이 경우 information_schema.routines을 원한다.

  6. ==============================

    6.시스템 물건을 제외 :

    시스템 물건을 제외 :

    select proname from pg_proc where proowner <> 1;
    
  7. ==============================

    7.내 조리법에서보세요. 그것은 기능과 트리거를 읽습니다. 그것은 행 정보에 기초한다 : PostgreSQL의 META로부터 추출 된 정보 (INFORMATION_SCHEMA)

    내 조리법에서보세요. 그것은 기능과 트리거를 읽습니다. 그것은 행 정보에 기초한다 : PostgreSQL의 META로부터 추출 된 정보 (INFORMATION_SCHEMA)

  8. ==============================

    8.ALTER의 기능을 참조 할 때 필요한 함수의 인수의 형태를 입수 - oldevectortypes을 사용하여 잘 날 위해 일했습니다.

    ALTER의 기능을 참조 할 때 필요한 함수의 인수의 형태를 입수 - oldevectortypes을 사용하여 잘 날 위해 일했습니다.

    내가 PostgreSQL의에서 특정 스키마의 데이터베이스에 저장된 모든 기능의 목록을 얻을 수있는 방법을 참조하십시오?

  9. ==============================

    9.아래 쿼리에서 SCHEMA_NAME 및 TABLE_NAME을 변경해주십시오 :

    아래 쿼리에서 SCHEMA_NAME 및 TABLE_NAME을 변경해주십시오 :

    SELECT n.nspname AS schema_name
         , p.proname AS function_name
         , pg_get_function_arguments(p.oid) AS args
         , pg_get_functiondef(p.oid) AS func_def
    FROM   pg_proc p
    JOIN   pg_namespace n ON n.oid = p.pronamespace
    AND    n.nspname = 'schema_name'
    AND    p.prosrc like '%table_name%'
    

    테이블 이름은 대소 문자를 구분하기 때문에, 그래서 정확한 테이블 이름을 정의해야합니다.

  10. from https://stackoverflow.com/questions/1559008/list-stored-functions-that-reference-a-table-in-postgresql by cc-by-sa and MIT license