Problema com constraint

Delphi

01/06/2004

Tentei adicionar uma chave estrangeira em uma tabela e apareceu o seguinte erro:

Unsuccessful metadata update
STORE RDB$REF_CONSTRAINTS failed
action cancelled by trigger (1) to preserve data integrity
Name of Referential Constraint not defined in constraints table

Ja pesquisei inumeras vezes isso aqui no forum e encontrei pessoas com o mesmo problema e nao foi resolvido.

Alguem saberia o que posso fazer???

Agradeço desde já

Thiago


Tcarvalho

Tcarvalho

Curtidas 0

Respostas

Afarias

Afarias

01/06/2004

qual o comando SQL q usou pra tentar criar tal constraint ?! e qual o banco de dados?!


T+


GOSTEI 0
Tcarvalho

Tcarvalho

01/06/2004

O banco é interbase e o codigo SQL é o seguinte:

ALTER TABLE SINTOMA_OS ADD FOREIGN KEY(CODOS) REFERENCES OS(CODOS)

Varias pessoas ja postaram a mesma duvida no forum, mas nao obtive resposta. Uma pessoa disse que resolveu, mas nao sei o e-mail dele..Olhe o endereço abaixo e veja o que ele disse.

http://delphiforum.icft.com.br/forum/viewtopic.php?t=23049&highlight=cancelled

Thiago


GOSTEI 0
Cabreu.jr

Cabreu.jr

01/06/2004

Tente com o seguinte código:

ALTER TABLE SINTOMA_OS ADD [b:d67fba4d57]FK_SINTOMA_OS_OS[/b:d67fba4d57] FOREIGN KEY(CODOS) REFERENCES OS(CODOS) [b:d67fba4d57]ON UPDATE CASCADE[/b:d67fba4d57];


GOSTEI 0
Afarias

Afarias

01/06/2004

faltou justamente definir um nome único para a constraint!


T+


GOSTEI 0
Tcarvalho

Tcarvalho

01/06/2004

Segui as recomendações dos amigos e continua dando o mesmo erro. Coloquei um outro nome unico na constraint e nada.

Acredito que é um bug do interbase

Atenciosamente


GOSTEI 0
Rômulo Barros

Rômulo Barros

01/06/2004

Segue o código correto: (Tudo isso pq vc ignorou o link que mencionei no outro tópico seu, com o mesmo assunto) :lol: :lol: :lol:

ALTER TABLE SINTOMA_OS ADD [color=red:0bd763ac88]CONSTRAINT [/color:0bd763ac88]FK_SINTOMA_OS_OS FOREIGN KEY(CODOS) REFERENCES OS(CODOS) ON UPDATE CASCADE;


GOSTEI 0
Tcarvalho

Tcarvalho

01/06/2004

Eu ja tinha feito o teste usando a clausula CONSTRAINT e o erro continua...


GOSTEI 0
Rômulo Barros

Rômulo Barros

01/06/2004

Unsuccessful metadata update
STORE RDB$REF_CONSTRAINTS failed
action cancelled by trigger (1) [color=red:05dd8a9e3d]to preserve data integrity [/color:05dd8a9e3d]
Name of Referential Constraint not defined in constraints table

Limpe o seu banco de dados e tente novamente o comando abaixo(com a base de dados limpa):

ALTER TABLE SINTOMA_OS ADD CONSTRAINT FK_SINTOMA_OS_OS FOREIGN KEY(CODOS) REFERENCES OS(CODOS) ON UPDATE CASCADE;


GOSTEI 0
Tcarvalho

Tcarvalho

01/06/2004

Ainda nao fiz o teste, mas quando vc fala em limpar vc quer dizer apagar todos os registros????
Nao posso fazer isso, pois senao o usuario me mata...
De qualquer forma vou testar na base de teste..

Atenciosamente


GOSTEI 0
Afarias

Afarias

01/06/2004

Vc deve ter ai no campo para o qual quer criar a constraint um valor q nào está presente no campo de referência da outra tabela (PK)

verifique isso com o código::

select * from SINTOMA_OS s
where not exists (select 1 from os where codos = s.codos);


se essa consulta retornar registros, ai está o erro!!


T+


GOSTEI 0
Tcarvalho

Tcarvalho

01/06/2004

Essa minha tabela foi criada agora, e portanto nao tem nenhum registro...


GOSTEI 0
Tcarvalho

Tcarvalho

01/06/2004

Ainda tenho esperanças de resolver esse meu problema...


GOSTEI 0
POSTAR