sql >> Databáze >  >> RDS >> PostgreSQL

Jak zkontrolovat, která funkce používá typ?

Všechny závislosti najdete v systémovém katalogu pg_depend .

Tím se vrátí všechny funkce v závislosti na typu . Tj. nejen ty s typem v RETURNS klauzule, ale také s parametrem type as function:

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

Toto funguje také pro tabulkové funkce:

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

Použití informačních funkcí systémového katalogu .

Mohou existovat další závislosti (ne na funkcích). Odstraňte poslední WHERE podmínku z mého dotazu k testování (a přizpůsobte SELECT seznam, samozřejmě).

A stále existuje možnost použití typu explicitně (například v přetypování) v dotazech v těle funkce nebo v dynamickém SQL. Takové případy použití můžete identifikovat pouze analýzou textu těla funkce. V systému nejsou registrovány žádné explicitní závislosti.

Související:



  1. můžeme pojmenovat výchozí omezení v oracle

  2. převod časového razítka na datum v jazyce Java

  3. wierd bug při čtení ze souboru csv a importu dat do mysql pomocí php

  4. mysql - připojit první a poslední záznam podle typu skupiny?