Aquí está un ejemplo sobre el error ORA-01733. Para empezar, necesitamos una tabla con datos:
SQL> create table mi_tabla
2 (mi_nombre varchar2(10))
3 /
Tabla creada.
SQL> insert into mi_tabla
2 values('Carlos')
3 /
1 fila creada.
SQL>
Luego debemos crear una vista de la tabla. La vista tiene que incluir
una columna virtual, es decir una columna que no corresponde a ningunos
datos en la tabla. Decidí añadir una edad de 21 años a cada fila. No
hay columna en la tabla para tomar nota de la edad. Así puse 21 en la
vista y lo llamé edad. No es buena idea hacer éste con sus propias bases de datos. Estoy haciendolo simplemente para explicar el error:
SQL> create view mi_vista
2 as select mi_nombre, 21 edad
3 from mi_tabla
4 /
Vista creada.
SQL> select * from mi_vista
2 /
MI_NOMBRE EDAD
---------- ----------
Carlos 21
SQL>
Se puede emplear la vista para poner al día mi_nombre porque la columna en la vista corresponde a la columna en la tabla:
SQL> update mi_vista
2 set mi_nombre = 'Manuel'
3 where mi_nombre = 'Carlos'
4 /
1 fila actualizada.
SQL>
Pero si Vd intenta actualizar edad, Oracle le da el error ORA-01733:
SQL> update mi_vista
2 set edad = edad + 1
3 /
set edad = edad + 1
*
ERROR en linea 2:
ORA-01733: columna virtual no permitida aqui
SQL>
Si Vd quiere cambiar la edad, tiene que borrar la vista y recrearla con el nuevo valor.
No hay comentarios:
Publicar un comentario