- Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 15 anos, 9 meses atrás por
fsitja.
-
AutorPosts
-
5 de março de 2010 às 5:47 pm #92978
gsmdf
ParticipanteGalera,
Tenho duas tabelas:
– PT com campos cod_arq_eletronico_catalogado e cod.
– DS com campos cod_arquivo_eletronico e cod_documento_tramitavel.Gostaria de saber como é o SQL para criação de uma trigger na tabela DS before insert e before update que cancele a operação e mostre uma mensagem “MENSAGEM ERRO” quando a seguinte condição retornasse 0 ocorrências, ou seja, não há em PT uma tupla com mesmo cod_documento_tramitavel e cod_arquivo_eletronico que a que estão tentando inserir ou atualizar na tabela DS.
pt.cod = ds.cod_documento_tramitavel
AND
pt.cod_arq_eletronico_catalogado = ds.cod_arquivo_eletronicoEm outras palavras, só deve-se permitir inserir nova tupla ou atualizar valores que esses dois códigos estejam juntos na tabela PT para alguma tupla.
5 de março de 2010 às 11:21 pm #92987Ishii
ParticipanteOlá,
Desculpe-me mas a sua dúvida está em COMO criar a Trigger ou como FAZER a codificação na Trigger ou como RETORNAR a mensagem de erro?
Não acho que seja um problema de lógica, então não entendi direito…
Você já tentou fazer essa trigger e deu algum erro?
[]s Ishii 😛
8 de março de 2010 às 11:38 pm #93013gsmdf
ParticipanteMinha dúvida é a codificação da Trigger e como fazer retornar aquela mensagem de erro.
Grato!9 de março de 2010 às 12:00 am #93014fsitja
Participantept.cod e pt.cod_arq_eletronico_catalogado são PK da tabela PT?
Mesmo que não seja PK, se, por exemplo, a tupla pt.cod = 1 e pt.cod_arq_eletronico = 1 só puder existir uma vez na tabela PT isso caracteriza uma unique key e o melhor é declarar a UK e uma foreign key na tabela DS referenciando a PT.
9 de março de 2010 às 1:11 am #93021gsmdf
Participante[quote=”fsitja”:39rmy6z4]pt.cod e pt.cod_arq_eletronico_catalogado são PK da tabela PT?
Mesmo que não seja PK, se, por exemplo, a tupla pt.cod = 1 e pt.cod_arq_eletronico = 1 só puder existir uma vez na tabela PT isso caracteriza uma unique key e o melhor é declarar a UK e uma foreign key na tabela DS referenciando a PT.[/quote]
Apenas COD é PK da tabela PT.
9 de março de 2010 às 6:44 am #93027fsitja
ParticipanteBom… teoricamente você pode ainda criar uma Unique Key nas duas colunas e uma FK na DS… mas eu pensaria bem antes de colocar essa coluna cod_arquivo_eletronico na tabela DS. O estritamente correto é sempre que precisar dela fazer um join com a PT e buscá-la, e não haveria razão para replicar a informação e criar um workaround desses.
Connected to Oracle Database 11g Enterprise Edition Release 11.1.0.6.0
Connected as FSITJASQL> create table pt (cod number(10) primary key,
2 cod_arq_eletronico_catalogado number(10));Table created
SQL> create table ds (cod_documento_tramitavel number(10),
2 cod_arquivo_eletronico number(10));Table created
SQL> alter table pt add constraint uk_pt unique (cod, cod_arq_eletronico_catalogado);
Table altered
SQL> alter table ds add constraint fk_ds_uk_pt
2 foreign key (cod_documento_tramitavel, cod_arquivo_eletronico)
3 references pt (cod, cod_arq_eletronico_catalogado);Table altered
-
AutorPosts
- Você deve fazer login para responder a este tópico.