Вы находитесь на странице: 1из 19

UPDATE

UPDATE -- modifica filas de una tabla

UPDATE [ ONLY ] tabla [ [ AS ] alias ]


SET { columna = { expresin | DEFAULT } | ( columna [, ...] ) =
( { expresin | DEFAULT } [, ...] ) } [, ...] [ FROM lista_from ]
[ WHERE condicin | WHERE CURRENT OF nombre_cursor ]
[ RETURNING * | expresin_salida [ [ AS ] nombre_salida ] [, ...] ]

UPDATE
UPDATE modifica los valores de las columnas especificadas en
todas las filas que satisfagan la condicin. Solamente las columnas
a ser modificadas necesitan ser mencionadas en la clausula SET;
columnas no modificadas explcitamente mantienen sus valores
previos.
Por defecto, UPDATE modificar las filas en la tabla especificada y
todas sus tablas hijas. Si desea modificar solamente la tabla
mencionada especficamente, debe usar la clausula ONLY

UPDATE
Hay dos maneras de modificar una tabla usando la
informacin contenida en otras tablas de la base de datos:
usando sub-selects, o especificando tablas adicionales en
la clausula FROM.
Cual tcnica es ms apropiada
circunstancias especficas

depende

en

las

UPDATE
La clausula opcional RETURNING causa que UPDATE compute
y retorne los valores basados en cada fila modificada.
Cualquier expresin usando las columnas de la tabla, y/o
columnas de otras tablas mencionadas en el FROM, puede ser
computado.
Son usados los nuevos valores (post-modificacin) de las
columnas de la tabla. La sintaxis de la lista RETURNING es
idntica a la de la lista de salida del SELECT.

UPDATE
Debe tener privilegios UPDATE sobre la tabla, o al
menos sobre la columnas que estn listadas para ser
modificadas.
Debe tener tambin privilegios de SELECT sobre
cualquier columna cuyo valor es ledo en las
expresiones o condicin.

PARMETROS

UPDATE

tabla
El nombre de la tabla a modificar (opcionalmente
calificado por el esquema).
alias
Un nombre sustituto para la tabla destino- Cuando un
alias es provisto, completamente oculta el nombre real
de la tabla. Por ejemplo, dado UPDATE foo AS f, el
resto de la sentencia UPDATE debe referirse a esta
tabla como f y no foo.

PARMETROS

UPDATE

columna
El nombre de una columna de la tabla. Si es necesario,
el nombre de una columna puede estar calificado con el
nombre de un subcampo o subndice de arreglo. No
incluir el nombre de la tabla en la especificacin de una
columna destino - por ejemplo, es invlido UPDATE tab
SET tab.col = 1.

PARMETROS

UPDATE

expresin
Una expresin para asignar a una columna. La expresin
puede usar valores viejos de esta u otras columnas de la
tabla.
DEFAULT
Establecer la columna a su valor predeterminado (que ser
NULL si no se asigno una expresin por defecto especfica).

PARMETROS

UPDATE

lista_from
Una lista de expresiones de tabla, permitiendo que
columnas de otras tablas aparezcan en la condicin del
WHERE y expresiones de actualizacin. Esto es similar
a la lista de tablas que pueden ser especificadas en la
Clausula FROM de una sentencia SELECT. Note que la
tabla destino no debe aparecer en la lista_from, salvo
que tenga la intencin de hacer una junta con si misma
(en cuyo caso debe aparecer con un alias en la
lista_from).

PARMETROS

UPDATE

condicin
Una expresin que devuelve un valor del tipo boolean. Solo
filas para las cuales la expresin devuelve true sern
modificadas.
nombre_cursor
El nombre del cursor para usar en una condicin WHERE
CURRENT OF. La fila a ser modificada es la ms
recientemente trada del cursor. El cursor debe ser una
consulta no agrupada en la tabla destino del UPDATE. Note
que WHERE CURRENT OF no puede ser especificado junto
con una condicin Booleana. Ver DECLARE para mayor
informacin sobre el uso de cursores con WHERE
CURRENT OF.

PARMETROS

UPDATE

expresin_salida
Una expresin a ser computada y retornada por el
comando UPDATE luego de que cada fila es actualizada.
La expresin puede usar cualquier nombre de columna
de la tabla o las tablas listadas en el FROM. Escribir *
para retornar todas las columnas.
nombre_salida
Un nombre para usar para la columna retornada.

SALIDAS

UPDATE

Al completarse exitosamente, un comando UPDATE devuelve una


etiqueta de comando de la forma:
UPDATE cantidad
La cantidad es el nmero de filas modificadas. Si cantidad es 0,
ninguna fila coincidi con la condicin (esto no es considerado un
error).
Si el comando UPDATE contiene una clausula RETURNING, el
resultado ser similar al de una sentencia SELECT conteniendo las
columnas y valores definidos en la lista RETURNING, computado
sobre las filas modificadas por el comando.

NOTAS

UPDATE

Cuando una clausula FROM est presente, lo que esencialmente sucede es que la
tabla destino es juntada a las tablas mencionadas en la lista_from, y cada fila de
salida de la junta representa una operacin de modificacin para la tabla destino. Al
usar FROM debera asegurarse que la junta produzca al menos ua fila de salida por
cada fila a ser modificada. En otras palabras, una fila destino no debera juntarse con
ms de una fila de las otras tabla(s). Si lo hace, solamente una de las filas juntadas
ser usada para actualizar la fila destino, pero cual ser usada no es predecible.
Dado esta indeterminacin, referenciar otras tablas solamente con sub-selects es
ms seguro, aunque a veces sea ms difcil de leer y ms lento que usar una junta.

EJEMPLOS

UPDATE

ambiar la palabra Drama a Dramtico en la columna genero de la tabla pelculas

UPDATE peliculas SET genero = 'Dramtico' WHERE genero = 'Drama';

EJEMPLOS

UPDATE

Ajustar las entradas de temperatura y volver precipitacin a su valor


predeterminado en una fila de la tabla clima:

UPDATE clima SET temp_min = temp_min+1, temp_max =


temp_max+15, prcp = DEFAULT WHERE ciudad = 'San
Francisco' AND fecha = '2003-07-03';

EJEMPLOS

UPDATE

Realizar la misma operacin y retornar las entradas actualizadas:

UPDATE clima SET temp_min = temp_min+1, temp_max =


temp_max+15, prcp = DEFAULT WHERE ciudad = 'San
Francisco' AND fecha = '2003-07-03'; RETURNING temp_min,
temp_max, prcp;

EJEMPLOS

UPDATE

sar la sintaxis alternativa de listado de columna para hacer la misma actualizaci

UPDATE clima SET (temp_min, temp_max, prcp) = (temp_min+1,


temp_max+15, DEFAULT) WHERE ciudad = 'San Francisco' AND
fecha = '2003-07-03';

EJEMPLOS

UPDATE

Incrementar la cuenta de ventas de un vendedor que administra la


cuenta de Acme Corporation, usando la clausula FROM:

UPDATE empleados SET cuenta_venta = cuenta_venta + 1


FROM cuentas WHERE cuentas.nombre = 'Acme Corporation'
AND empleados.id = cuentas.vendedor;

EJEMPLOS

UPDATE

Realizar la misma operacin, usando un sub-select en la clausula WHERE: :

UPDATE empleados SET cuenta_venta = cuenta_venta + 1


WHERE id = (SELECT vendedor FROM cuentas WHERE nombre
= 'Acme Corporation');

Вам также может понравиться