Saltar la navegación

7.4.- Modificación de objetos.

Si deseas modificar un objeto almacenado en una tabla tan sólo tienes que utilizar las mismas sentencias SQL que disponías para modificar registros de una tabla. ¿Recuerdas la sentencia UPDATE? Ahora puedes volver a utilizarla para modificar también los objetos de la tabla, de igual manera que cualquier otro tipo de dato.

Hay una pequeña diferencia en la forma de especificar los nombre de los campos afectados, en función del tipo de tabla: según sea una tabla de objetos, o bien una tabla con alguna columna de tipo objeto.

Si se trata de una tabla de objetos, se hará referencia a los atributos de los objetos justo detrás del nombre asignado a la tabla. Sería algo similar al formato siguiente:

UPDATE NombreTabla
	SET NombreTabla.atributoModificado = nuevoValor
	WHERE NombreTabla.atributoBusqueda = valorBusqueda;

Continuando con el ejemplo empleado anteriormente, vamos a suponer que deseas modificar los datos de un determinado usuario. Por ejemplo, modifiquemos el crédito del usuario identificado por el login 'luitom64', asignándole el valor 0.

UPDATE UsuariosObj
	SET UsuariosObj.credito = 0
	WHERE UsuariosObj.login = 'luitom64';

Es muy habitual abreviar el nombre de la tabla con un alias:

UPDATE UsuariosObj u
	SET u.credito = 0
	WHERE u.login = 'luitom64';

Pero no sólo puedes cambiar el valor de un determinado atributo del objeto. Puedes cambiar un objeto por otro como puedes ver en el siguiente ejemplo, en el que se sustituye el usuario con login 'caragu72' por otro usuario nuevo.

UPDATE UsuariosObj u SET u = Usuario('juaesc82', 'JUAN', 'ESCUDERO LARRASA', '10/04/2011', 0) WHERE u.login = 'caragu72';

Si se trata de una tabla con columnas de tipo objeto, se debe hacer referencia al nombre de la columna que contiene los objetos:

UPDATE NombreTabla
	SET NombreTabla.colObjeto.atributoModificado = nuevoValor
	WHERE NombreTabla.colObjeto.atributoBusqueda = valorBusqueda;

A continuación puedes ver un ejemplo de actualización de datos de la tabla que se había creado con una columna del tipo de objeto Usuario. Recuerda que a la columna en la que se almacenaban los objetos de tipo Usuario se le había asignado el nombre unUsuario:

UPDATE Gente g
	SET g.unUsuario.credito = 0
	WHERE g.unUsuario.login = 'luitom64';

O bien, puedes cambiar todo un objeto por otro, manteniendo el resto de los datos de la fila sin modificar, como en el siguiente ejemplo, donde los datos de DNI y partidasJugadas no se cambia, sólo se cambia un usuario por otro.

UPDATE Gente g
	ET g.unUsuario = Usuario('juaesc82', 'JUAN', 'ESCUDERO LARRASA', '10/04/2011', 0)
	WHERE g.unUsuario.login = 'caragu72';