35.54. tables #

A visão tables contém todas as tabelas e visões definidas no banco de dados corrente. Somente são mostradas as tabelas e visões para as quais o usuário corrente tem acesso (por ser o dono, ou por ter algum privilégio).

Tabela 35.52. Colunas de tables

Coluna Tipo de dados

Descrição

table_catalog sql_identifier

Nome do banco de dados que contém a tabela (sempre o banco de dados corrente)

table_schema sql_identifier

Nome do esquema que contém a tabela

table_name sql_identifier

Nome da tabela

table_type character_data

Tipo da tabela: BASE TABLE para uma tabela-base persistente (o tipo de tabela normal), VIEW para uma visão, FOREIGN para uma tabela estrangeira ou LOCAL TEMPORARY para uma tabela temporária

self_referencing_column_name sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

reference_generation character_data

Aplica-se a uma funcionalidade não disponível no PostgreSQL

user_defined_type_catalog sql_identifier

Se a tabela for uma tabela tipada [a], o nome do banco de dados que contém o tipo de dados subjacente (sempre o banco de dados corrente), ou nula caso contrário.

user_defined_type_schema sql_identifier

Se a tabela for uma tabela tipada, o nome do esquema que contém o tipo de dados subjacente; caso contrário, será nulo.

user_defined_type_name sql_identifier

Se a tabela for uma tabela tipada, o nome do tipo de dados subjacente, ou nula caso contrário

is_insertable_into yes_or_no

YES se a tabela for inserível, NO caso contrário. (As tabelas-base são sempre inseríveis, as visões não necessariamente.)

is_typed yes_or_no

YES se a tabela for uma tabela tipada, NO caso contrário

commit_action character_data

Ainda não implementado

[a] Tabelas tipadas são tabelas definidas com um tipo de dados estruturado definido pelo usuário. IBM DB2 – Typed tables (N. T.)


Exemplo 35.50. Exemplo do tradutor

Tabelas e visões definidas no banco de dados corrente

Uso do esquema de informações para mostrar as tabelas e visões da usuária ana no esquema public. Para este exemplo, foi acrescentada a tabela tipada pessoa_tipada às tabelas autor e literatura que a usuária já posuía, e foi usado o jsonb para eliminar as colunas com valor nulo e formatar a saída.

CREATE TYPE tipo_pessoa AS (
    nome       text,       -- nome da pessoa
    altura_cm  numeric,    -- altura da pessoas em cm
    peso_kg    numeric,    -- peso da pessoa em kg
    imc        numeric     -- índice de massa corporal
);
CREATE TYPE
CREATE TABLE pessoa_tipada OF tipo_pessoa;
CREATE TABLE
SELECT jsonb_pretty(jsonb_strip_nulls(to_jsonb(t)))
FROM information_schema.tables t
WHERE table_schema = 'public';

                 jsonb_pretty
----------------------------------------------
 {                                           +
     "is_typed": "NO",                       +
     "table_name": "autor",                  +
     "table_type": "BASE TABLE",             +
     "table_schema": "public",               +
     "table_catalog": "ana",                 +
     "is_insertable_into": "YES"             +
 }
 {                                           +
     "is_typed": "NO",                       +
     "table_name": "literatura",             +
     "table_type": "BASE TABLE",             +
     "table_schema": "public",               +
     "table_catalog": "ana",                 +
     "is_insertable_into": "YES"             +
 }
 {                                           +
     "is_typed": "YES",                      +
     "table_name": "pessoa_tipada",          +
     "table_type": "BASE TABLE",             +
     "table_schema": "public",               +
     "table_catalog": "ana",                 +
     "is_insertable_into": "YES",            +
     "user_defined_type_name": "tipo_pessoa",+
     "user_defined_type_schema": "public",   +
     "user_defined_type_catalog": "ana"      +
 }
(3 linhas)