sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan kontrollerer man, hvilken funktion der bruger en type?

Du kan finde alle afhængigheder i systemkataloget pg_depend .

Dette returnerer alle funktioner afhængigt af typen . dvs. ikke kun dem med typen i RETURNS klausul, men også dem med typen som funktionsparameter:

SELECT objid::regproc                            AS function_name
     , pg_get_functiondef(objid)                 AS function_definition
     , pg_get_function_identity_arguments(objid) AS function_args
     , pg_get_function_result(objid)             AS function_returns
FROM   pg_depend
WHERE  refclassid = 'pg_type'::regclass
AND    refobjid   = 'my_type'::regtype    -- insert your type name here
AND    classid    = 'pg_proc'::regclass;  -- only find functions

Dette virker også for tabelfunktioner:

...
RETURNS TABLE (foo my_type, bar int)

Brug af systemkataloginformationsfunktioner a> .

Der kan være andre afhængigheder (ikke til funktioner). Fjern den sidste WHERE betingelse fra min forespørgsel for at teste (og tilpasse SELECT liste, selvfølgelig).

Og der er stadig mulighed for, at typen bruges eksplicit (i en cast for eksempel) i forespørgsler i funktionskroppen eller i dynamisk SQL. Du kan kun identificere sådanne use cases ved at parse teksten i funktionsteksten. Der er ingen eksplicitte afhængigheder registreret i systemet.

Relateret:



  1. Sådan importeres en PostgreSQL-database ved hjælp af phpPgAdmin

  2. IN-klausul i mysql nodejs

  3. Hvordan overfører man en værdi fra Android til php-webservice og henter den?

  4. SQL WHERE kolonne =alt