Problemas com foreign key

Banco de Dados

12/12/2016

Caros colegas, estou com uma situação curiosa em relação à uma integridade referencial. Tenho duas tabelas no PostgreSQL, uma tabela pai e outra filha. Existe uma integridade referencial aplicada nessas tabelas da forma convencional:

ALTER TABLE TAB_FILHA ADD CONSTRAINT FK_TESTE FOREIGN KEY (CDTESTE) REFERENCES TAB_PAI (CDTESTE);

Só que o mais curioso é que quando procuro um determinado codigo, ele está na tabela tab_filha mas não está na tabela tab_pai.

Será que existe algum comando que quando ao inserir o registro seja solicitado que ignore as integridades referenciais? Pois a integridade com certeza está aplicada, mas esse registro não segue essa referencia. Tanto que fiz um backup desse banco e ao restaurá-lo deu problema.

Um colega até chegou a postar que pode ser que os registros já existiam e ao implementar a integridade ela passa a valer somente para os novos registros, mas isso não é verdade. Ao tentar implementar tendo registros inconsistentes, dá problema e não permite a implementação.

Alguém sabe como isso pode ter acontecido. Já passei por essa situação mais de uma vez.

Obrigada
Wanessa

Wanessa

Curtidas 0

Melhor post

Jones Granatyr

Jones Granatyr

13/12/2016

Hum, agora entendi, eu achei que você estava buscando os dados utilizando SQL. É bem estranho isso, pois teoricamente quando você cria uma chave estrangeira ele não irá deixá-la criar se existirem registros inconsistentes
GOSTEI 1

Mais Respostas

Jones Granatyr

Jones Granatyr

12/12/2016

Olá! Essa opção para "desligar" a integridade não tem até onde conheço. E será que o SQL está correto? Teria como postar ele aqui?
GOSTEI 0
Wanessa

Wanessa

12/12/2016

Qual SQL vc está falando?
A questão é que existe registros na tabela filha que não tem na pai. Aí eu vou lá na tabela filha e a integridade está aplicada.
Tanto que fui reproduzir essas duas tabelas em outro banco e deu erro. Não consegui criar a integridade novamente pois dizia que tinha registros na filha e não tinha na pai. Tentei inserir os registros primeiro e depois aplicar a integridade(igualzinho estava no banco original) e deu problema tb.
Não consegui entender como o banco original está assim. É um banco de produção ainda.
E como disse, não é a primeira vez que passo por isso. Já aconteceu com algumas tabelas no PostgreSQL.
Grata!!!
GOSTEI 0
POSTAR