Problema com o nome da constraint

Dicas sobre o Oracle Designer. Dicas sobre modelagem, ER, etc.
Responder
Marcos
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sex, 24 Fev 2006 9:52 am
Localização: BA
Marcos

Estou usando um Domínio para definir alguns campos. Isso está funcionando perfeitamente. Entretanto, associado ao domínio deve existir uma constraint para definir os possíveis valores do atributo. Essa constraint não aparece em lugar nenhum do Oracle Designer (versão 9.0.2.95.8, release 9.0.2.8). Quando gero o script de banco de dados essa constraint é criada, mas o nome dela é composto por letras e números que não dizem nada em relação ao negócio. Preciso configurar o nome dessa constraint dentro da ferramenta, pois não posso ficar controlando isso dentro do script de banco de dados.

Alguém pode me ajudar?
Desde já, agradeço.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Sim, o designer sempre gera algo do tipo SYS_C0054343 para as check constraints. Infelizmente, eu nunca vi um lugar pra alterar os nomes delas.

Mas porque você quer alterar o nome delas ? Se for o caso de buscar as constraints de uma determinada tabela, basta consultar na ALL_CONSTRAINTS...

Caso você queira registrar qual domínio é daquele campo, pode colocar nos comentários do campo (é uma idéia)

Se alguém souber como alterar, dá um toque!
Marcos
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sex, 24 Fev 2006 9:52 am
Localização: BA

A necessidade é de negócio. Todos os objetos devem seguir um padrão de nomenclatura.
Realmente não existe, na ferramenta, a possibilidade de alterar o nome da check constraint.
É o fim do mundo!!!
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Talvez não seja o fim do mundo ! :-)
Tenho uma idéia pra resovler isso.
Você faz um script que altera o nome das suas constraints para a forma que você quiser.

Busca o nome da constraint na ALL_CONSTRAINTS e monta um comando de alteração de acordo com o nome (por exemplo).

Pra alterar o nome de uma constraint você usa este comando:

Selecionar tudo

 ALTER TABLE sua_tabela RENAME CONSTRAINT nome_da_constraint TO nome_que_você_quer;
Crie um script e monte esse comando pra todas constraints que você quiser.
Exemplo:

Selecionar tudo

SQL> select 'ALTER TABLE '||TABLE_NAME||' RENAME CONSTRAINT '
  2  ||CONSTRAINT_NAME||' TO FK_'||TABLE_NAME COMANDO
  3  from user_constraints
  4  where rownum < 10
  5    and constraint_name like 'SYS%'
  6  /

COMANDO
-------------------------------------------------------------------------------------------
ALTER TABLE MV_CLIENTE_SEGURADORA RENAME CONSTRAINT SYS_C009448 TO FK_MV_CLIENTE_SEGURADORA
ALTER TABLE MV_CLIENTE_SEGURADORA RENAME CONSTRAINT SYS_C009447 TO FK_MV_CLIENTE_SEGURADORA
ALTER TABLE MV_CLIENTE_SEGURADORA RENAME CONSTRAINT SYS_C009446 TO FK_MV_CLIENTE_SEGURADORA
ALTER TABLE MV_CLIENTE_SEGURADORA RENAME CONSTRAINT SYS_C009445 TO FK_MV_CLIENTE_SEGURADORA
ALTER TABLE MV_CLIENTE_SEGURADORA RENAME CONSTRAINT SYS_C009444 TO FK_MV_CLIENTE_SEGURADORA
ALTER TABLE MV_CLIENTE_SEGURADORA RENAME CONSTRAINT SYS_C009443 TO FK_MV_CLIENTE_SEGURADORA
ALTER TABLE TB_CLASSIF_PESSOA RENAME CONSTRAINT SYS_C009207 TO FK_TB_CLASSIF_PESSOA
ALTER TABLE TB_SIMULACAO_ORC RENAME CONSTRAINT SYS_C008845 TO FK_TB_SIMULACAO_ORC
ALTER TABLE TB_SIMULACAO_ORC RENAME CONSTRAINT SYS_C008844 TO FK_TB_SIMULACAO_ORC

9 rows selected.

SQL> 
É claro, que este script acima vai dar erro, pois tem nomes duplicados.. O script acima é só um exemplo. Você pode criar um script que junta o nome das duas tabelas envolvidas, ou o campo, etc... Depois do SQL montado, basta executar os comandos ! :roll:
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes