Hola!
Es correcto lo que mencionas del CASCADE pero no es la función que tiene realmente; es decir, que el hecho de que este CASCADE significa que se actualizaría toda la información con pasar un único ID.
En la tabla
padre tienes el
campo_uno el cual lo puedes actualizar pasando como condición el
id_padre de ese registro para actualizar la información.
En la tabla
hija tienes el
campo_dos y el
estado el cual lo puedes actualizar de dos formas:
1.- Si el campo a actualizar no es por registro; es decir, necesitas afectar a todos los registros que estén relacionados a ese padre, entonces puedes pasar en la condición el
id_padre para afectar todos los registros relacionados a ese padre.
2.- Si el campo a actualizar si es necesario que sea por registro; es decir, si tienes dos registros hijos del padre 1 y necesitas actualizar solamente el registro 1 sin afectar la información del registro 2 aun cuando son del mismo padre, entonces pasar en la condición el
id_hijo solamente para afectar a ese registro.
El CASCADE tiene como principal objetivo borrar los registros de la tabla dependiente cuando se borra el registro de la tabla principal (en una sentencia DELETE), o actualiza el valor de la clave secundaria cuando se actualiza el valor de la clave referenciada (en una sentencia UPDATE), no obstante, no actualiza la información de los campos que componen a dichas tablas; es decir, si tu haces un UPDATE sobre la tabla
hija para actualizar el
campo_dos pasando como condición un
id_padre el cual no exista en la tabla
padre obviamente te va a mandar error, eso ya sea en Java o cualquier otro lenguaje incluso en el mismo gestor de base de datos te mandará un error, incluso si quieres actualizar un campo de tu tabla
padre con un id el cual no existe, igualmente te mandará un error.
Si lo que deseas es evitarte un UPDATE doble por así decirlo; es decir, un UPDATE para la tabla padre y otro UPDATE para la tabla hija, te recomiendo que trabajes bajo un Framework de persistencia como lo es Hibernate. Con dicho Framework lo que haces es no ejecutar consultas directamente en base de datos, sino más bien métodos que te permiten actualizar una tabla mediante un objeto, en el caso de las tablas relacionadas lo que haces es pasar un objeto padre con su objeto hijo lleno y eso se actualiza en base de datos.
Sin más que comentar, quedo al pendiente de cualquier duda y/o comentario.
Saludos!