Problema com constraint
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
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
Curtidas 0
Respostas
Afarias
01/06/2004
qual o comando SQL q usou pra tentar criar tal constraint ?! e qual o banco de dados?!
T+
T+
GOSTEI 0
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
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
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];
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
01/06/2004
faltou justamente definir um nome único para a constraint!
T+
T+
GOSTEI 0
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
Acredito que é um bug do interbase
Atenciosamente
GOSTEI 0
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;
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
01/06/2004
Eu ja tinha feito o teste usando a clausula CONSTRAINT e o erro continua...
GOSTEI 0
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;
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
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
Nao posso fazer isso, pois senao o usuario me mata...
De qualquer forma vou testar na base de teste..
Atenciosamente
GOSTEI 0
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+
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
01/06/2004
Essa minha tabela foi criada agora, e portanto nao tem nenhum registro...
GOSTEI 0
Tcarvalho
01/06/2004
Ainda tenho esperanças de resolver esse meu problema...
GOSTEI 0