sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur kontrollerar man vilken funktion som använder en typ?

Du kan hitta alla beroenden i systemkatalogen pg_depend .

Detta returnerar alla funktioner beroende på typ . d.v.s. inte bara de med typen i RETURNS sats, men även de 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

Detta fungerar även för tabellfunktioner:

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

Använda funktioner för systemkataloginformation a> .

Det kan finnas andra beroenden (inte till funktioner). Ta bort den sista WHERE villkor från min fråga för att testa (och anpassa SELECT lista, uppenbarligen).

Och det finns fortfarande möjligheten att typen används explicit (i en cast till exempel) i frågor i funktionskroppen eller i dynamisk SQL. Du kan bara identifiera sådana användningsfall genom att analysera texten i funktionskroppen. Det finns inga explicita beroenden registrerade i systemet.

Relaterat:



  1. MySQL-sorteringstabell efter kolumnnamn

  2. MySQL Sum() flera kolumner

  3. TSQL välj i Temp-tabellen från dynamisk sql

  4. Bokningskalender Ankomst- och avresedatum