GARANTIR DESCONTO

Fórum foreign key no IBExpert #49351

12/02/2005

0

Agradeço a quem estiver familiarizado com o assunto e puder ajudar. (Firebird 1.5, ambiente de auto escola). Estou tentando definir uma tabela (Veiculo) a qual contém uma coluna chamada Instr_Resp (instrutor responsável) que, como o prórprio nome sugere, é o instrutor responsável pelo veículo. Esta fk referencia Cod_Instr que é a chave primária na tabela Instrutor. Consegui definir as tabelas Instrutor e Veiculo, com excessão da informação sobre a foreign key. O IBExpert apresenta na descrição da tabela uma coluna com o título fk. Porém não consegui marcar o campo Instr_Resp como fk. Tentei também uma query em SQL (Alter table ...) mas sempre acontece um erro. Gostaria que alguém pudesse me fornecer instruções ou, pelo menos, um exempo que eu possa usar como modelo. Estou parado há dias ´enganchado´ nesta dificuldade.
Saudações


Roberto Padilha

Roberto Padilha

Responder

Posts

12/02/2005

Afarias

alter table Veiculo add constraint fk_veiculo_resp
foreign key (Instr_Resp) references Instrutor (Cod_Instr);


se está dando erro, passe a mesangem para podermos ver qual o motivo.


T+


Responder

Gostei + 0

12/02/2005

Roberto Padilha

Copiei e colei o texto que o A. Farias me enviou. Executei a query e desta vez não deu erro. Porém depois disso acrescentei, após a última palavra do texto, a complementação ´on delete cascade´ que é necessária mas que eu havia me esquecido:

alter table Veiculo add constraint fk_veiculo_resp
foreign key (Instr_Resp) references Instrutor (Cod_Instr) on delete cascade;

Desta vez, ao executar a query ocorreu a mensagem de erro colada abaixo:

This operation is not defined for system tables.
unsuccessful metadata update.
STORE RDB$INDICES failed.
attempt to store duplicate value (visible to active transactions) in unique index ´RDB$INDEX_5´.

Agradeço ao A. Farias a presteza e propriedade com que ma ajudou anteriormente e recorro mais uma vez ao prestimoso moderador para saber como resolver o novo problema.


Responder

Gostei + 0

12/02/2005

Vinicius2k

Colega,

Isto está ocorrendo pq já existe a constraint com o mesmo nome da que vc está tentando criar...
Para fazer a correção, acrescentando a ação, vc precisa ´dropar´ a constraint atual e recriar da forma correta :

´Dropar´:
alter table Veiculo drop constraint fk_veiculo_resp

E depois recriar :
alter table Veiculo add constraint fk_veiculo_resp 
foreign key (Instr_Resp) references Instrutor (Cod_Instr) on delete cascade;


T+


Responder

Gostei + 0

13/02/2005

Roberto Padilha

Tudo certinho agora. Obrgado Vinícius, obrigado A. Farias.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar