Restrições de Integridade Integridade Semântica - DIMAp
Restrições de Integridade Integridade Semântica - DIMAp
Restrições de Integridade Integridade Semântica - DIMAp
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Suporte a RIs em SQL<br />
• RIs quanto ao alcance <strong>de</strong> dados<br />
– cláusula check; asserts e triggers<br />
• RIs quanto ao momento da verificação<br />
– imediato (<strong>de</strong>fault)<br />
– postergado (SQL padrão)<br />
set integrity for Departamentos off<br />
...<br />
set integrity for Departamentos immediate checked<br />
• RIs <strong>de</strong> transição <strong>de</strong> estado<br />
– triggers (com referência a valores novos/antigos)<br />
• RIs <strong>de</strong> ativação explícita<br />
– stored procedures<br />
RIs no SQL-Server<br />
• RIs <strong>de</strong> transição <strong>de</strong> estados<br />
– duas tabelas especiais mantidas pelo SGBD<br />
• inserted<br />
– mantém o novo valor <strong>de</strong> uma tupla atualizada ou uma nova<br />
tupla inserida no BD<br />
• <strong>de</strong>leted<br />
– mantém o valor antigo <strong>de</strong> uma tupla atualizada ou uma tupla<br />
excluída do BD<br />
– exemplo: salários sempre reajustados para mais!<br />
create trigger<br />
ReajustaSalario on<br />
empregados<br />
before update as<br />
referencing NEW salário<br />
as SalárioNovo when<br />
salário > SalárioNovo<br />
(Rollback Transaction)<br />
create trigger ReajustaSalario<br />
on empregados<br />
after update as<br />
if exists<br />
(select * from empregados e1 join<br />
<strong>de</strong>leted e2 on e1.codEmp =<br />
e2.codEmp and e2.salario ><br />
e1.salario) rollback transaction<br />
10