SóProvas


ID
71854
Banca
FCC
Órgão
TRT - 3ª Região (MG)
Ano
2009
Provas
Disciplina
Banco de Dados
Assuntos

No ambiente SQL é possível, tanto para triggers quanto para constraints

Alternativas
Comentários
  • Como eu consigo fazer isso via constraints? Alguém poderia ajudar? Obrigado.
  • Olá! Você pode fazer isso durante a criação ou alteração da estrutura de uma tabela. Segue exemplo:

    CREATE TABLE tabPrinc( idPrinc int primary key,  coluna2Princ varchar(20), coluna3Princ number(5,2));
    CREATE TABLE tabSec( idSec int primary key,  idPrincFk int references tabelaPrincipal (idPrinc) ON DELETE CASCADE);
    O comando imediatamente acima faz o seguinte: Se o registro for excluído na tabPrinc, todos os registros de tabSec que referenciam este que foi excluído em tabPrinc serão excluídos também.
    Além do ON DELETE CASCADE, também existem:
    - ON DELETE SET NULL (que colocaria NULL em todos os registros de tabSec que referenciam o registro em tabPrinc que foi excluído)
    - ON DELETE RESTRICT ( se tabSec possuir referências a tabPrinc, executa rollback da exclusão do registro em tabPrinc )
    - ON DELETE NO ACTION ( se tabSec possuir referências a tabPrinc, faz nada. Nem chega a excluir o registro em tabPrinc ).

    Referência: http://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqlj13590.html

    Quanto ao cascade usado com triggers, eu não conhecia. Segue um link interessante sobre o assunto:
    http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.sqls.doc/sqls362.htm

    Abs.