Dúvida MySQL Chave estrangeira, o que é OnDelete e OnUpdate?

Galera estou fazendo um sistema em java e usando JPA, mas estou configurando o Mysql bem certinho tb… uso o MYSQL 5.0 uso o MYSQL Administrator para gerenciar o banco, tem 2 opções quando coloco chave estrangeira que é OnDelete e OnUpdate, imagino que são ações que ocorrem quando na tabela de origem acontecer uma deleção ou atualização. Mas para que serve as ações que você seleciona para elas, NoAction (na certa é para não fazer nada), set Null, Restrict, Cascade???

Imagine os seguintes dados:

[code]clientes
id nome
1 Jair
2 João
3 Maria

compras
id data id_cliente
1 01/01/2008 1
2 05/01/2008 2
3 07/03/2008 1[/code]

Ao excluir o registro 1 da tabela clientes por exemplo, as opções serão as seguintes:

NoAction: o registro da tabela clientes será excluido e o registro da tabela compras no campo id_cliente continuará referenciando o cliente 1 que não existe mais.

SetNull: o registro da tabela clientes será excluido e o campo id_cliente da tabela compras terá o valor NULL.

Restrict: o registro da tabela clientes não poderá ser excluído enquanto existir alguma referencia pra ele na tabela compras, para excluir o registro da tabela clientes antes você terá que exluir os registro da tabela compras que o referenciam.

Cascade: o registro 1 da tabela clientes será excluido e tambem os registros 1 e 3 da tabela compras.

Mais detalhes sobre isso e o comportamento do MySQL nessas situações você pode ler em:

http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html

mas detalhe impossível, já tirou todas as minhas dúvidas sobre o OnDelete, muito obrigado, no caso do OnUpdate, como por exemplo funcionaria o restrict, afinal vc só está fazendo uma alteração, vc teria que deletar as referências só para atualizar???, me explica por favor o OnUpdate também.