foreign key no IBExpert
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
Saudações
Roberto Padilha
Curtidas 0
Respostas
Afarias
12/02/2005
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+
foreign key (Instr_Resp) references Instrutor (Cod_Instr);
se está dando erro, passe a mesangem para podermos ver qual o motivo.
T+
GOSTEI 0
Roberto Padilha
12/02/2005
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.
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.
GOSTEI 0
Vinicius2k
12/02/2005
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´:
E depois recriar :
T+
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+
GOSTEI 0
Roberto Padilha
12/02/2005
Tudo certinho agora. Obrgado Vinícius, obrigado A. Farias.
GOSTEI 0