15.05.2013 Views

Restrições de Integridade Integridade Semântica - DIMAp

Restrições de Integridade Integridade Semântica - DIMAp

Restrições de Integridade Integridade Semântica - DIMAp

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!