Estoy seleccionando de las tablas FOO y BAR. Me gustaría bloquear los registros de FOO que se devuelven, pero no quiero que se bloqueen los registros de BAR.Bloqueo de Oracle con SELECCIONAR ... PARA ACTUALIZAR DE
cursor c_foobar is
select foo.*, bar.* from
foo, bar
where foo.id = bar.foo_id
for update of <what should I put here?>
Parece que necesito especificar columnas individuales, pero quiero que todo el registro de foo se bloquee. p.ej. Me gustaría poder hacer algo como:
cursor c_foobar is
select foo.*, bar.* from
foo, bar
where foo.id = bar.foo_id
for update of foo
¿Tengo que enumerar todas las columnas de foo en la sección for update of
el fin de bloquear a todos? ¿O puedo elegir arbitrariamente cualquier columna en foo, incluso aquellas que no son su clave principal, y se bloqueará todo el registro?
muy buena; no estoy seguro de cómo me perdí eso. Así que supongo que solo requiere un nombre de columna arbitrario de la fila ... fácil pero no parece terriblemente intuitivo para mí. –
Estoy de acuerdo, no es así. Me parece recordar haber leído en algún lugar hace mucho tiempo que el requisito de especificar columnas es para que en alguna versión futura, quizás Oracle solo bloquee determinadas columnas en la fila. Pero mi memoria es confusa en eso. –
Es una forma de código de auto-documentación, creo: "Solo tengo la intención de actualizar la columna 'salario'" –