information_schema.sql

来自「PostgreSQL7.4.6 for Linux」· SQL 代码 · 共 1,693 行 · 第 1/5 页

SQL
1,693
字号
           CAST(null AS sql_identifier) AS self_referencing_column_name,           CAST(null AS character_data) AS reference_generation,           CAST(null AS sql_identifier) AS user_defined_type_catalog,           CAST(null AS sql_identifier) AS user_defined_type_schema,           CAST(null AS sql_identifier) AS user_defined_name    FROM pg_namespace nc, pg_class c, pg_user u    WHERE c.relnamespace = nc.oid AND u.usesysid = c.relowner          AND c.relkind IN ('r', 'v')          AND (u.usename = current_user               OR has_table_privilege(c.oid, 'SELECT')               OR has_table_privilege(c.oid, 'INSERT')               OR has_table_privilege(c.oid, 'UPDATE')               OR has_table_privilege(c.oid, 'DELETE')               OR has_table_privilege(c.oid, 'RULE')               OR has_table_privilege(c.oid, 'REFERENCES')               OR has_table_privilege(c.oid, 'TRIGGER') );GRANT SELECT ON tables TO PUBLIC;/* * 20.59 * TRIGGERED_UPDATE_COLUMNS view */-- PostgreSQL doesn't allow the specification of individual triggered-- update columns, so this view is empty.CREATE VIEW triggered_update_columns AS    SELECT CAST(current_database() AS sql_identifier) AS trigger_catalog,           CAST(null AS sql_identifier) AS trigger_schema,           CAST(null AS sql_identifier) AS trigger_name,           CAST(current_database() AS sql_identifier) AS event_object_catalog,           CAST(null AS sql_identifier) AS event_object_schema,           CAST(null AS sql_identifier) AS event_object_table,           CAST(null AS sql_identifier) AS event_object_column    WHERE false;GRANT SELECT ON triggered_update_columns TO PUBLIC;/* * 20.62 * TRIGGERS view */CREATE VIEW triggers AS    SELECT CAST(current_database() AS sql_identifier) AS trigger_catalog,           CAST(n.nspname AS sql_identifier) AS trigger_schema,           CAST(t.tgname AS sql_identifier) AS trigger_name,           CAST(em.text AS character_data) AS event_manipulation,           CAST(current_database() AS sql_identifier) AS event_object_catalog,           CAST(n.nspname AS sql_identifier) AS event_object_schema,           CAST(c.relname AS sql_identifier) AS event_object_table,           CAST(null AS cardinal_number) AS action_order,           CAST(null AS character_data) AS action_condition,           CAST(             substring(pg_get_triggerdef(t.oid) from                       position('EXECUTE PROCEDURE' in substring(pg_get_triggerdef(t.oid) from 48)) + 47)             AS character_data) AS action_statement,           CAST(             CASE WHEN t.tgtype & 1 = 1 THEN 'ROW' ELSE 'STATEMENT' END             AS character_data) AS action_orientation,           CAST(             CASE WHEN t.tgtype & 2 = 2 THEN 'BEFORE' ELSE 'AFTER' END             AS character_data) AS condition_timing,           CAST(null AS sql_identifier) AS condition_reference_old_table,           CAST(null AS sql_identifier) AS condition_reference_new_table    FROM pg_namespace n, pg_class c, pg_trigger t, pg_user u,         (SELECT 4, 'INSERT' UNION ALL          SELECT 8, 'DELETE' UNION ALL          SELECT 16, 'UPDATE') AS em (num, text)    WHERE n.oid = c.relnamespace          AND c.oid = t.tgrelid          AND c.relowner = u.usesysid          AND t.tgtype & em.num <> 0          AND NOT t.tgisconstraint          AND u.usename = current_user;GRANT SELECT ON triggers TO PUBLIC;/* * 20.63 * USAGE_PRIVILEGES view */-- Of the things currently implemented in PostgreSQL, usage privileges-- apply only to domains.  Since domains have no real privileges, we-- represent all domains with implicit usage privilege here.CREATE VIEW usage_privileges AS    SELECT CAST(u.usename AS sql_identifier) AS grantor,           CAST('PUBLIC' AS sql_identifier) AS grantee,           CAST(current_database() AS sql_identifier) AS object_catalog,           CAST(n.nspname AS sql_identifier) AS object_schema,           CAST(t.typname AS sql_identifier) AS object_name,           CAST('DOMAIN' AS character_data) AS object_type,           CAST('USAGE' AS character_data) AS privilege_type,           CAST('NO' AS character_data) AS is_grantable    FROM pg_user u,         pg_namespace n,         pg_type t    WHERE u.usesysid = t.typowner          AND t.typnamespace = n.oid          AND t.typtype = 'd';GRANT SELECT ON usage_privileges TO PUBLIC;/* * 20.65 * VIEW_COLUMN_USAGE */CREATE VIEW view_column_usage AS    SELECT DISTINCT           CAST(current_database() AS sql_identifier) AS view_catalog,           CAST(nv.nspname AS sql_identifier) AS view_schema,           CAST(v.relname AS sql_identifier) AS view_name,           CAST(current_database() AS sql_identifier) AS table_catalog,           CAST(nt.nspname AS sql_identifier) AS table_schema,           CAST(t.relname AS sql_identifier) AS table_name,           CAST(a.attname AS sql_identifier) AS column_name    FROM pg_user, pg_namespace nv, pg_class v, pg_depend dv,         pg_depend dt, pg_class t, pg_namespace nt,         pg_attribute a, pg_user u    WHERE nv.oid = v.relnamespace          AND v.relkind = 'v'          AND v.oid = dv.refobjid          AND dv.refclassid = 'pg_catalog.pg_class'::regclass          AND dv.classid = 'pg_catalog.pg_rewrite'::regclass          AND dv.deptype = 'i'          AND dv.objid = dt.objid          AND dv.refobjid <> dt.refobjid          AND dt.classid = 'pg_catalog.pg_rewrite'::regclass          AND dt.refclassid = 'pg_catalog.pg_class'::regclass          AND dt.refobjid = t.oid          AND t.relnamespace = nt.oid          AND t.relkind IN ('r', 'v')          AND t.oid = a.attrelid          AND dt.refobjsubid = a.attnum          AND t.relowner = u.usesysid AND u.usename = current_user;GRANT SELECT ON view_column_usage TO PUBLIC;/* * 20.66 * VIEW_TABLE_USAGE */CREATE VIEW view_table_usage AS    SELECT DISTINCT           CAST(current_database() AS sql_identifier) AS view_catalog,           CAST(nv.nspname AS sql_identifier) AS view_schema,           CAST(v.relname AS sql_identifier) AS view_name,           CAST(current_database() AS sql_identifier) AS table_catalog,           CAST(nt.nspname AS sql_identifier) AS table_schema,           CAST(t.relname AS sql_identifier) AS table_name    FROM pg_user, pg_namespace nv, pg_class v, pg_depend dv,         pg_depend dt, pg_class t, pg_namespace nt,         pg_user u    WHERE nv.oid = v.relnamespace          AND v.relkind = 'v'          AND v.oid = dv.refobjid          AND dv.refclassid = 'pg_catalog.pg_class'::regclass          AND dv.classid = 'pg_catalog.pg_rewrite'::regclass          AND dv.deptype = 'i'          AND dv.objid = dt.objid          AND dv.refobjid <> dt.refobjid          AND dt.classid = 'pg_catalog.pg_rewrite'::regclass          AND dt.refclassid = 'pg_catalog.pg_class'::regclass          AND dt.refobjid = t.oid          AND t.relnamespace = nt.oid          AND t.relkind IN ('r', 'v')          AND t.relowner = u.usesysid AND u.usename = current_user;GRANT SELECT ON view_table_usage TO PUBLIC;/* * 20.68 * VIEWS view */CREATE VIEW views AS    SELECT CAST(current_database() AS sql_identifier) AS table_catalog,           CAST(nc.nspname AS sql_identifier) AS table_schema,           CAST(c.relname AS sql_identifier) AS table_name,           CAST(             CASE WHEN u.usename = current_user THEN pg_get_viewdef(c.oid)                  ELSE null END             AS character_data) AS view_definition,           CAST('NONE' AS character_data) AS check_option,           CAST(null AS character_data) AS is_updatable, -- FIXME           CAST(null AS character_data) AS is_insertable_into  -- FIXME    FROM pg_namespace nc, pg_class c, pg_user u    WHERE c.relnamespace = nc.oid AND u.usesysid = c.relowner          AND c.relkind = 'v'          AND (u.usename = current_user               OR has_table_privilege(c.oid, 'SELECT')               OR has_table_privilege(c.oid, 'INSERT')               OR has_table_privilege(c.oid, 'UPDATE')               OR has_table_privilege(c.oid, 'DELETE')               OR has_table_privilege(c.oid, 'RULE')               OR has_table_privilege(c.oid, 'REFERENCES')               OR has_table_privilege(c.oid, 'TRIGGER') );GRANT SELECT ON views TO PUBLIC;-- The following views have dependencies that force them to appear out of order./* * 20.21 * DATA_TYPE_PRIVILEGES view */CREATE VIEW data_type_privileges AS    SELECT CAST(current_database() AS sql_identifier) AS object_catalog,           CAST(x.objschema AS sql_identifier) AS object_schema,           CAST(x.objname AS sql_identifier) AS object_name,           CAST(x.objtype AS character_data) AS object_type,           CAST(x.objdtdid AS sql_identifier) AS dtd_identifier    FROM      (        SELECT table_schema, table_name, 'TABLE'::text, dtd_identifier FROM columns        UNION ALL        SELECT domain_schema, domain_name, 'DOMAIN'::text, dtd_identifier FROM domains        UNION ALL        SELECT specific_schema, specific_name, 'ROUTINE'::text, dtd_identifier FROM parameters        UNION ALL        SELECT specific_schema, specific_name, 'ROUTINE'::text, dtd_identifier FROM routines      ) AS x (objschema, objname, objtype, objdtdid);GRANT SELECT ON data_type_privileges TO PUBLIC;/* * 20.27 * ELEMENT_TYPES view */CREATE VIEW element_types AS    SELECT CAST(current_database() AS sql_identifier) AS object_catalog,           CAST(n.nspname AS sql_identifier) AS object_schema,           CAST(x.objname AS sql_identifier) AS object_name,           CAST(x.objtype AS character_data) AS object_type,           CAST(x.objdtdid AS sql_identifier) AS array_type_identifier,           CAST(             CASE WHEN nbt.nspname = 'pg_catalog' THEN format_type(bt.oid, null)                  ELSE 'USER-DEFINED' END AS character_data) AS data_type,           CAST(null AS cardinal_number) AS character_maximum_length,           CAST(null AS cardinal_number) AS character_octet_length,           CAST(null AS sql_identifier) AS character_set_catalog,           CAST(null AS sql_identifier) AS character_set_schema,           CAST(null AS sql_identifier) AS character_set_name,           CAST(null AS sql_identifier) AS collation_catalog,           CAST(null AS sql_identifier) AS collation_schema,           CAST(null AS sql_identifier) AS collation_name,           CAST(null AS cardinal_number) AS numeric_precision,           CAST(null AS cardinal_number) AS numeric_precision_radix,           CAST(null AS cardinal_number) AS numeric_scale,           CAST(null AS cardinal_number) AS datetime_precision,           CAST(null AS character_data) AS interval_type,           CAST(null AS character_data) AS interval_precision,                      CAST(null AS character_data) AS domain_default, -- XXX maybe a bug in the standard           CAST(current_database() AS sql_identifier) AS udt_catalog,           CAST(nbt.nspname AS sql_identifier) AS udt_schema,           CAST(bt.typname AS sql_identifier) AS udt_name,           CAST(null AS sql_identifier) AS scope_catalog,           CAST(null AS sql_identifier) AS scope_schema,           CAST(null AS sql_identifier) AS scope_name,           CAST(null AS cardinal_number) AS maximum_cardinality,           CAST('a' || x.objdtdid AS sql_identifier) AS dtd_identifier    FROM pg_namespace n, pg_type at, pg_namespace nbt, pg_type bt,         (           /* columns */           SELECT c.relnamespace, CAST(c.relname AS sql_identifier),                  'TABLE'::text, a.attnum, a.atttypid           FROM pg_class c, pg_attribute a           WHERE c.oid = a.attrelid                 AND c.relkind IN ('r', 'v')                 AND attnum > 0 AND NOT attisdropped           UNION ALL           /* domains */           SELECT t.typnamespace, CAST(t.typname AS sql_identifier),                  'DOMAIN'::text, 1, t.typbasetype           FROM pg_type t           WHERE t.typtype = 'd'           UNION ALL           /* parameters */           SELECT p.pronamespace, CAST(p.proname || '_' || CAST(p.oid AS text) AS sql_identifier),                  'ROUTINE'::text, pos.n, p.proargtypes[pos.n-1]           FROM pg_proc p, _pg_keypositions() AS pos(n)           WHERE p.pronargs >= pos.n           UNION ALL           /* result types */           SELECT p.pronamespace, CAST(p.proname || '_' || CAST(p.oid AS text) AS sql_identifier),                  'ROUTINE'::text, 0, p.prorettype           FROM pg_proc p         ) AS x (objschema, objname, objtype, objdtdid, objtypeid)    WHERE n.oid = x.objschema          AND at.oid = x.objtypeid          AND (at.typelem <> 0 AND at.typlen = -1)          AND at.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?