2. Constraints

Constraints são restrições criadas no banco de dados para:

  • Impedir que dados inválidos sejam cadastrados no banco de dados
  • Garantir a qualidade dos dados
  • Garantir que campos obrigatórios sejam preenchidos
  • Garantir integridade referencial definida no modelo relacional
  • Em geral fazem parte da especificação do projeto conceitual do banco de dados e estão descritas no modelo relacional

A adição de constraints em uma tabela pode ser feita de duas maneiras:

  1. Como parte do CREATE TABLE ao criar a tabela

  2. Como parte do ALTER TABLE quando se adiciona as constraints
    depois de ter criado a tabela (é o mais comum)

Tipos de Constraints

CONSTRAINT NOT NULL

Garante que a coluna não aceite valores nulos

CONSTRAINT UNIQUE

Garante que não existe valores não nulos repetidos

CONSTRAINT PRIMARY KEY

Identifica unicamente cada registro. Não pode ter valores nulos nem repetidos

CONSTRAINT FOREIGN KEY

Estabelece o relacionamento entre duas tabelas

  • É sempre criada no lado “MUITO” do relacionamento
  • É criada na coluna que é chave estrangeira
  • Deve sempre referenciar uma coluna em uma tabela que obrigatoriamente é UNIQUE ou PRIMARY KEY

Constraint FOREIGN KEY:

Palavras-chave

  • FOREIGN KEY: Define a coluna da tabela filha no nível de constraint da tabela
  • REFERENCES: Identifica a tabela e a coluna da tabela mãe
  • ON DELETE CASCADE: Deleta as linhas dependentes da tabela filha quando uma linha da tabela mãe é deletada
  • ON DELETE SET NULL: Converte os valores da chave estrangeira dependente em nulos

Integridade Referêncial

Um banco de dados impõe restrições referenciais para garan#r a integridade dos dados
quando as linhas de uma tabela são alteradas ou excluídas.

Se as linhas dependentes nas tabelas referenciadas ainda existem, essas referências
devem ser consideradas. SQL: 2003 especifica cinco diferentes ações referenciais que
devem ter lugar em tais ocorrências, são elas:

  • Cascade
  • Restrict
  • No Ac#on
  • Set Null
  • Set Default

CASCADE – Criação de ações em cascata

Deve ser usada com muito critério quando construímos um banco de dados
pelos riscos de sua u#lização, porém são de grande valia na garantia de integridade referencial no banco de dados.

  • ON DELETE CASCADE: A utilização da cláusula ON DELETE CASCADE especifica
    que se houver uma tentativa de apagar uma linha com uma chave primária
    referenciada por chaves estrangeiras em linhas existentes em outras tabelas,
    também serão apagadas todas as linhas que contêm essas chaves estrangeiras.

  • ON UPDATE CASCADE: A opção ON UPDATE CASCADE impede que sejam feitas
    mudanças na chave referenciada caso existam linhas referenciando o valor
    desta.

Podem ser utilizadas as duas cláusulas juntas.

RESTRICT (default)

Opção default. Esta opção não permite a exclusão/alteração na tabela pai de um
registro cuja chave primária exista em alguma tabela filha. A verificação é feita
antes de executar a instrução de exclusão/alteração.

NO ACTION

Esta opção não permite a exclusão/alteração na tabela pai de um registro cuja
chave primária exista em alguma tabela filha.

A verificação é feita após a execução da instrução de exclusão/alteração. Se a
regra de atualização for NO ACTION, serão verificadas as tabelas dependentes
com relação às restrições de chave estrangeira após todas as exclusões terem

sido executadas, mas antes dos gatilhos serem executados. Se alguma linha de
tabela dependente violar a restrição de chave estrangeira, a instrução será
rejeitada.

SET NULL

Altera o conteúdo da coluna (chave estrangeira) para nulo, perdendo a
referência, sem deixar valores inconsistentes. Caso a coluna correspondente a
chave estrangeira permita nulos.

SET DEFAULT

Altera o conteúdo da coluna (chave estrangeira) para o valor especificado na
cláusula default se houver.

CONSTRAINT CHECK

  • Define uma condição que cada linha deve atender
  • As seguintes expressões não são permitidas:

    • Referências às pseudocolunas CURRVAL, NEXTVAL,
      LEVEL e ROWNUM

    • Chamadas de functions

    • Consultas que fazem referência a outros valores em
      outras linhas

Violação de Constraints

results matching ""

    No results matching ""