Como usar a correspondência em instruções SQL

A integridade referencial envolve manter a consistência em um banco de dados SQL multitable. Você pode perder a integridade adicionando uma linha a uma tabela filho que não tem uma linha correspondente na tabela pai da criança. Você pode causar problemas semelhantes ao suprimir uma linha de uma tabela pai se linhas correspondentes a essa linha existir em uma tabela filho.

Suponha que a sua empresa tem uma tabela de clientes que mantém o controle de todos os seus clientes e uma tabela de vendas que registra todas as transações de vendas. Você não quer adicionar uma linha à venda até depois de introduzir o cliente fazer a compra na tabela de clientes. Você também não deseja excluir um cliente da tabela de clientes se o cliente fez compras que existem na tabela de vendas.

Antes de executar uma inserção ou deleção, você pode querer verificar a linha candidato para se certificar de que a inserção ou excluir essa linha não causa problemas de integridade. o PARTIDA predicado pode executar essa verificação.

Digamos que você tenha uma tabela de clientes e uma tabela SALES. Identificação do Cliente é a chave primária da tabela do cliente e age como uma chave estrangeira na tabela de vendas. Cada linha na tabela o cliente deve ter um único Identificação do Cliente que não é nulo.

Identificação do Cliente não é único na tabela de vendas, porque repetir os clientes compram mais de uma vez. Esta situação é bom- que não ameaça a integridade porque Identificação do Cliente é uma chave estrangeira em vez de uma chave primária na tabela.

Aparentemente, Identificação do Cliente pode ser nulo na tabela de vendas, porque alguém pode andar fora da rua, comprar algo, e sair antes de ter uma oportunidade de inserir seu nome e endereço na tabela de clientes. Esta situação pode criar problemas - uma linha na tabela a criança com nenhuma linha correspondente na tabela pai.

Para superar esse problema, você pode criar um cliente genérico na tabela do cliente e atribuir todas as vendas anônimas para esse cliente. Dizer que um cliente etapas até a caixa registadora e afirma que ela comprou um Strike Fighter F-35 em 18 de dezembro de 2012. Embora ela perdeu seu recibo, ela agora quer retornar o avião porque ele mostra-se como um porta-aviões no telas de radar dos oponentes.

Você pode verificar se ela comprou um F-35 por pesquisar seu banco de dados de vendas para um jogo. Primeiro, você deve recuperá-la Identificação do Cliente na variável vcustid- então você pode usar a seguinte sintaxe:

... WHERE (: vcustid, 'F-35', '2012/12/18') MATCH (SELECIONE Cliente, ProductID, SaleDateFROM SALES)

Se o PARTIDA predicado retorna um valor True, o banco de dados contém a venda do F-35 em 18 de dezembro de 2012, a este cliente de Identificação do Cliente. Leve de volta o produto defeituoso e reembolsar o dinheiro do cliente. (Nota: Se quaisquer valores no primeiro argumento do PARTIDA predicado são nulos, um valor verdadeiro sempre retorna.)

desenvolvedores de SQL acrescentou o PARTIDA predicado eo UNIQUE predicado pela mesma razão - eles fornecem uma maneira para executar explicitamente os testes definidos para a integridade referencial implícita (RI) e UNIQUE restrições.

A forma geral do PARTIDA predicado é como se segue:

Row_valueJOGO [UNIQUE] [SIMPLES | PARCIAL | CHEIO ] subquery

o UNIQUE, SIMPLES, PARCIAL, e CHEIO opções referem-se a regras que entram em jogo se a expressão valor de linha R tem uma ou mais colunas que são nulos. As regras para a PARTIDA predicado são uma cópia das regras de integridade referencial correspondente.

menu