Problema com o nome da constraint

Dicas sobre o Oracle Designer. Dicas sobre modelagem, ER, etc.
  

Mensagemem Sex, 24 Fev 2006 10:02 am

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.
Marcos
Localização: BA

Marcos

Mensagemem Sex, 24 Fev 2006 10:21 am

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!
dr_gori
Localização: Seattle, WA, USA

Thomas F. G

Mensagemem Ter, 07 Mar 2006 11:21 am

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!!!
Marcos
Localização: BA

Mensagemem Ter, 07 Mar 2006 12:08 pm

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:
Código: Selecionar todos
ALTER TABLE sua_tabela RENAME CONSTRAINT nome_da_constraint TO nome_que_voce_quer;


Crie um script e monte esse comando pra todas constraints que você quiser.
Exemplo:
Código: Selecionar todos
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:
dr_gori
Localização: Seattle, WA, USA

Thomas F. G



Voltar para Designer

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron