Integridade referencial

Introdução aos bancos de dados relacionais em SQL

Timo Grossenbacher

Data Journalist

Integridade referencial

  • Um registro que faz referência a outra tabela precisa apontar para um registro que já existe nessa tabela
  • Especificada entre duas tabelas
  • Aplicada por meio de chaves externas
Introdução aos bancos de dados relacionais em SQL

Violações da integridade referencial

A integridade referencial da tabela A para a tabela B será violada...

  • ...se um registro na tabela B que é referenciado por um registro na tabela A for excluído.
  • ...se um registro na tabela A que faz referência a um registro inexistente da tabela B for inserido.
  • Chaves externas evitam violações!
Introdução aos bancos de dados relacionais em SQL

Como lidar com violações

CREATE TABLE a (
 id integer PRIMARY KEY,
 column_a varchar(64), 
 ...,
 b_id integer REFERENCES b (id) ON DELETE NO ACTION
);
CREATE TABLE a (
 id integer PRIMARY KEY,
 column_a varchar(64), 
 ...,
 b_id integer REFERENCES b (id) ON DELETE CASCADE
);
Introdução aos bancos de dados relacionais em SQL

Como lidar com violações (continuação)

ON DELETE...

  • ...NO ACTION: gera um erro
  • ...CASCADE: apaga todos os registros de referência
  • ...RESTRICT: gera um erro
  • ...SET NULL: define a coluna de referência como NULL
  • ...SET DEFAULT: define a coluna de referência como o valor padrão
Introdução aos bancos de dados relacionais em SQL

Vamos ver alguns exemplos!

Introdução aos bancos de dados relacionais em SQL

Preparing Video For Download...