Quando os nomes são criados pelo PostgreSQL.
Como em:
 CONSTRAINT <tabela>_pkey PRIMARY KEY (coluna)
 CONSTRAINT <tabela>_<coluna>_key UNIQUE (coluna)

Ele consegue copiar igualmente como está a original. Talvez seja este
o problema.
A chave primaria ele manteve pois terminava com a final "_pkey".

Não lembro direito mas acho que na documentação não fala nada.
Talvez não seja possível com nomes diferentes como o índice que você
mostrou de exemplo.

2010/1/4 Emanuel Araújo <[email protected]>:
> Pessoal, estou copiando algumas tabelas (varias) de um schema para outro e
> preciso que as novas tabelas herdam toda a estrutura das originais, com isso
> poderia usar alguns métodos, mas preferi fazer usando LIKE, com isso consigo
> copiar toda a estrutura da tabela original para a nova.
>
> Ao fazer notei que alguns indices foram criados com o nome diferente, ou
> seja, ele não herdou o nome completo do indice, mesmo em schemas diferentes
> ele poderia ter mantido, o que aconteceu com a chave primaria mas não
> ocorreu com os demais.
>
> Um exemplo seria:
>
> \d t_cliente
>                   Table "public.t_cliente"
>      Column     |     Type      |         Modifiers
> ----------------+---------------+----------------------------
>  pkey         | integer       | default 0
>  codcliente   | text          | not null
>  nome         | text          |
>  fantasia     | text          |
>  cnpj_cpf     | text          |
>  inscricao_rg | text          |
>  contato      | text          |
>  atividade    | text          |
> Indexes:
>     "t_cliente_pkey" PRIMARY KEY, btree (s_codcliente), tablespace
> "poli_disk1"
>     "t_cliente_u_pkey_idx01" btree (u_pkey), tablespace "poli_disk1"
>
> faz cópia:
> CREATE TABLE backup.t_cliente (LIKE t_cliente INCLUDING DEFAULTS INCLUDING
> INDEXES INCLUDING CONSTRAINTS) ;
>
> \d backup.t_cliente
>                   Table "backup.t_cliente"
>      Column     |     Type      |         Modifiers
> ----------------+---------------+----------------------------
>  pkey         | integer       | default 0
>  codcliente   | text          | not null
>  nome         | text          |
>  fantasia     | text          |
>  cnpj_cpf     | text          |
>  inscricao_rg | text          |
>  contato      | text          |
>  s_atividade    | text          |
> Indexes:
>     "t_cliente_pkey" PRIMARY KEY, btree (s_codcliente), tablespace
> "poli_disk1"
>     "t_cliente_u_pkey_key" btree (u_pkey), tablespace "poli_disk1"
>
> Vejam que ele manteve a chave primaria com o mesmo nome mas o indice ele
> mudou.  Tudo bem que no resultado final eu teria o mesmo indice mas a nível
> de padronização ficaria diferente.
>
> Existe alguma forma de força a utilização do mesmo dos índices, ou não pode
> ser assim?  Por default o Postgres não faz isso.
>
> --
> Atenciosamente,
>
> Emanuel Araújo
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>



-- 
Tarcisio F. Sassara
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a