Bancos de DadosVisão geral
Restrições, Integridade e Triggers
Uma restrição de integridade é um predicado que o SGBD recusa violar. A integridade referencial é a inclusão da chave estrangeira: todo valor não nulo de F em S aparece na chave candidata K de uma única relação R — π_F(S) ∖ {NULL} ⊆ π_K(R).
Políticas ao apagar a relação referenciada, checagem até o COMMIT e o disparo do gatilho neste tópico — e transações e views nos tópicos seguintes — partem dessa inclusão e desse evento.
As páginas se agrupam em dois blocos. O primeiro declara a estrangeira e escolhe o que o SGBD faz nas filhas quando a referenciada é apagada ou tem a chave alterada, e em que instante a inclusão é testada.
O segundo amarra um procedimento a INSERT, UPDATE ou DELETE e escolhe o momento, quantas vezes o corpo corre e as variáveis NEW e OLD.
Chaves e Integridade Referencial testa a inclusão e aplica ON DELETE e ON UPDATE nas filhas: recusar, cascatear ou anular a FK.
Duas relações que se apontam com NOT NULL, sem estado intermediário válido, estão em Chaves e Integridade Referencial: DEFERRABLE reavalia no COMMIT.
Abortar ou alterar NEW antes de gravar, e copiar OLD e NEW para uma tabela de auditoria depois do UPDATE, estão em Triggers. BEFORE corre antes da gravação deste comando; AFTER corre depois do sucesso, na mesma transação.
Cascatear filhas na cláusula da FK está em Chaves e Integridade Referencial. Gravar em outra tabela no mesmo evento está em Triggers. ROW dispara uma vez por tupla e tem NEW e OLD; STATEMENT dispara uma vez e não tem a linha corrente.
Páginas deste tópico
Chaves e Integridade Referencial
ProMédia incidência no POSCOMP8 min de leitura · 15ª mais cobrada em Bancos de Dados
REFERENCES; ON DELETE/UPDATE; DEFERRABLE; FK pode repetir e ser NULL; uma relação alvo; valor ⊂ PK.
Triggers
ProBaixa incidência no POSCOMP6 min de leitura · 29ª mais cobrada em Bancos de Dados
BEFORE/AFTER; ROW vs STATEMENT; NEW/OLD; um Passo de auditoria.