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.

RIs no SQL-Server<br />

• Cláusula Check<br />

– não permite subconsultas<br />

– RIs que necessitam relacionar tuplas da mesma tabela ou<br />

<strong>de</strong> outras tabelas <strong>de</strong>vem ser implementadas através <strong>de</strong><br />

gatilhos<br />

– exemplo: salário do empregado <strong>de</strong>ve ser menor que o<br />

salário do gerente<br />

create table empregados<br />

(...<br />

check(salario <<br />

(select salario<br />

from Empregados e<br />

where e.codEmp = codGer)<br />

)<br />

create trigger SalarioGer<br />

on empregados<br />

after insert,update as<br />

if exists<br />

(select * from empregados e1 join<br />

inserted e2 on e1.codEmp =<br />

e2.codGer and e2.salario ><br />

e1.salario)<br />

rollback transaction<br />

RIs no SQL-Server<br />

• Assertivas<br />

– não são suportadas<br />

– estas RIs <strong>de</strong>vem ser implementadas através <strong>de</strong> gatilhos<br />

– exemplo: soma <strong>de</strong> orçamentos e empréstimos não po<strong>de</strong><br />

ultrapassar 50000000,00<br />

create assertion<br />

ControleDespesas<br />

check (<br />

(select sum(ValorTotal)<br />

from Empréstimos) +<br />

(select sum(Orçamento)<br />

from Departamentos)<br />

50000000.00<br />

rollback transaction<br />

drop table temp1<br />

drop table temp2<br />

Obs.: prever um trigger<br />

também para Departamentos<br />

11

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

Saved successfully!

Ooh no, something went wrong!