ADF

Modificar Registros: Update

Para modificar los datos SQL provee una palabra reservada llamada UPDATE, esta sentencia permite la fácil actualización de uno o mas registros según sea el caso. La sintaxis es la siguiente:

UPDATE <nombre_tabla>
SET <campo1> = <valor1>
{[,<campo2> = <valor2>,...,<campoN> = <valorN>]}
[ WHERE <condicion>]



Ahora un Ejemplo:

UPDATE CLIENTES
SET
NOMBRE = 'Devjoker',
APELLIDO1 = 'Herrarte',
APELLIDO2 = 'Sánchez'
WHERE CO_CLIENTE = 10



Update INNER JOIN

En ocasiones queremos actaualizar los datos de una tabla con los datos de otra (muy común para desnormalizar un modelo de datos).
Habitualmente, usamos subconsultas para este proposito, pero Transact SQL permite la utilización de la sentencia UPDATE INNER JOIN.

UPDATE CLIENTES
SET
NOMBRE = FICHERO_CLIENTES.NOMBRE,
APELLIDO1 = FICHERO_CLIENTES.APELLIDO1,
APELLIDO2 = FICHERO_CLIENTES.APELLIDO2
FROM CLIENTES
INNER JOIN FICHERO_CLIENTES
ON FICHERO_CLIENTES.CO_CLIENTE = CLIENTES.CO_CLIENTE

Clausula OUTPUT

A partir de la version de SQL Server 2005 disponemos de la clausula OUTPUT para recuperar los valores que hemos insertado. Al igual que en un trigger disponemos de las tablas lógicas INSERTED y DELETED.
Las columnas con prefijo DELETED reflejan el valor antes de que se complete la instrucción UPDATE o DELETE. Es decir, son una copia de los datos "antes" del cambio.
DELETED no se puede utilizar con la cláusula OUTPUT en la instrucción INSERT.


DECLARE @FILAS_ACTUALIZADAS TABLE
( CO_CLIENTE int ,
NOMBRE varchar(100),
APELLIDO1 varchar(100),
APELLIDO2 varchar(100)
)


UPDATE CLIENTES
SET
NOMBRE = 'Devjoker',
APELLIDO1 = 'Herrarte',
APELLIDO2 = 'Sánchez'
OUTPUT DELETED.* INTO @FILAS_ACTUALIZADAS
WHERE CO_CLIENTE IN (10, 11, 12)


SELECT * FROM @FILAS_ACTUALIZADAS

Las columnas con prefijo INSERTED reflejan el valor después de que se complete la instrucción UPDATE o INSERT, pero antes de que se ejecuten los desencadenadores. Es decir, son una copia de los datos "despues" del cambio.
INSERTED no se puede utilizar con la cláusula OUTPUT en la instrucción DELETE.


DECLARE @FILAS_ACTUALIZADAS TABLE


( CO_CLIENTE int ,
NOMBRE varchar(100),
APELLIDO1 varchar(100),
APELLIDO2 varchar(100)
)


UPDATE CLIENTES
SET
NOMBRE = 'Devjoker',
APELLIDO1 = 'Herrarte',
APELLIDO2 = 'Sánchez'
OUTPUT INSERTED.* INTO @FILAS_ACTUALIZADAS
WHERE CO_CLIENTE IN (10, 11, 12)


SELECT * FROM @FILAS_ACTUALIZADAS

0 Response to "Modificar Registros: Update"

Publicar un comentario

Popular Posts

Labels

AVG (1) Base de Datos (1) Campos (1) Constraint (1) Consulta (1) Count (1) DCL (1) DDL (1) delete (1) DISTINCT (1) DML (1) EXCEPT (1) Group By (1) HAVING (1) IN (1) Indice (1) insert (1) INTERSECT (1) JOIN (1) LIKE (1) Max (1) Min (1) Modificar (1) ORDER BY (1) registros (1) Select (1) SQL (4) SUM (1) Tipos de Datos (1) truncate (1) UNION (1) Update (1) WHERE (1)

Teste Teste Teste

Popular Posts

Teste Teste Teste