Oracle com CASCADE

Fala pessoal!Tenho que fazer um sistema de controle antidoping aqui no Oracle 10g e preciso de um help!
São apenas 5 tabelas:
Substancia(integer id,varchar nome_substancia,decimal minimo,decimal maximo)
Usuario(integer id,varchar nome_usuario,date nascimento,varchar genero,varchar nome_substancia)
Usuario_Antidoping(integer id_usuario,varchar nome_usuario,date nascimento,varchar genero,varchar observacao)
Exame(integer id_usuario,integer id_exame,varchar nome_substancia,decimal minimo,decimal maximo,decimal minimo_medido,decimal maximo_medido)
Contraprova(integer id_exame,integer id_contraprova,varchar nome_substancia,decimal minimo,decimal maximo,decimal minimo_medido,decimal maximo_medido,decimal minimo_contraprova,decimal maximo_contraprova)

Quando um Usuário é criado no Sistema, automaticamente um registro na tabela Exame é criada, e outro na tabela Contraprova.
Cada Usuário tem um exame a ele associado, mas podem ter várias contraprovas feitas.
A tabela Usuário_Antidoping controla as contraprovas no Sistema.
Como dá para perceber, a Tabela Exame contém os dados de Substância e a tabela contraprova contém os dados de Exame.

O que eu preciso saber é:
1)A query de INSERT quando eu crio um usuário e os registros em sequencias.Me disseram para usar CASCADE, mas nunca fiz isso, não entendi muito bem.
Quando eu crio o user, eu crio registros em Exame e Contraprova, é um CASCADE após o outro na MESMA query?

2)A query de UPDATE quando eu insiro em Exame e atualizo automaticamente os campos da contraprova correspondente aquele exame.

Qualquer dica é válida!um abraço!

Dê uma olhada nesse tuto
http://javaaberto.blogspot.com.br/2012/10/usando-cascade-no-banco-de-dados.html

Como funciona o Cascade?
Ele serve para você ativar um Update ou Delete de modo automático, quando uma tabela relacionado com outra sofrer algum tipo de alteração.

Ou seja, se tenho uma tabela por exemplo, de Permissões onde é cadastrado todos os nomes e tipos de permissões e outra tabela
onde eu relaciono o Usuário com essa permissão, ou seja, tenho 3 tabelas, uma das permissões cadastradas, outra para usuários e por fim,
crio uma tabela N:1 que estão relacionados a permissão com o usuário.

Tabelas
Permissoes | Permissoes_Usuario | Usuarios
-----1 -----------------1,1 -------------------1
-----2 -----------------2,1 -------------------2
-----3 -----------------3,1 -------------------3

1,1 -> permissao 1, usuario 1
2,1 -> permissao 2, usuario 1
3,1 -> permissao 3, usuario 1

DELETE FROM Usuarios WHERE id = 1
//se tiver vinculo com cascade, automaticamente os dados do usuario 1 da tabela Permissoes_Usuario será deletado

Como vai funcionar, se são dados relacionados vc concorda que quando eu deletar esse usuário a tabela de Permissoes_Usuario que estão relacionados
as permissoes desse usuario tem que ser deletado esses dados?

Pois bem, do que adiantaria eu ter um registro desse usuário sendo que nao existe mais?
É para isso que serve o cascade, para saber o que fazer com esse vínculo de dados, deletar quando for preciso, e alterar quando for preciso.

Nesse post explica como utilizar o Cascade: JPA: Mini Livro - Primeiros passos e conceitos detalhados.

[=

Caro Hebert Coelho, sua explicação é boa, mas não uso JPA, apenas JDBC puro.

charleston10, entendi + ou -.

No meu caso, é para atualizar quando preciso.
É assim: Cada Usuario faz um Exame, mas para cada Exame, há uma(ou mais) contraprovas.
Eu não entendi como fazer a amarração do UPDATE dessas três tabelas.

imagino que as tabelas fiquem assim(lendo o seu tutorial):

create table Usuario( 
id_usuario integer not null primary key, 
nome varchar (50), 
nascimento Date, 
genero varchar(3), 
observacao varchar(100)
)
create table Exame(
id_exame integer not null primary key,
id_usuario integer,
nome_substancia varchar,
minimo decimal(12,3),
maximo decimal(12,3),
minimo_medido decimal(12,3),
maximo_medido decimal(12,3)
)
create table Contraprova(
id_contraprova integer not null primary key,
id_Exame integer,
nome_substancia varchar,
minimo decimal(12,3),
maximo decimal(12,3),
minimo_medido decimal(12,3),
maximo_medido decimal(12,3),
minimo_medido_contraprova decimal(12,3),
maximo_medido_contraprova decimal(12,3)
)
alter table exame add constraint fk_exame_usuario foreign key (id_usuario) references usuario (id_usuario) on update cascade on delete 
alter table contraprova add constraint fk_exame_contraprova foreign key (id_exame) references exame (id_exame) on update cascade on delete

É isso?Mas na hora de mudar(o UPDATE em si) como fica a query de UPDATE de Exame e Contraprova?(Uso Oracle 10g express). Muito Obrigado por qualquer ajuda!

PaulH,
entendi o que vc está querendo fazer e a resposta é NÃO!Oracle não tem um UPDATE cascade da forma que vc quer por questões de integridade.Leia abaixo:
http://docs.oracle.com/cd/B19306_01/server.102/b14220/data_int.htm#sthref2973

Você pode usar uma Trigger. :wink: