SQL SERVER : (DELETE, TRANSACCIONES)
SCRIPT CARGA DE REGISTROS
CREATE TABLE DATOS(
Id INT IDENTITY not null,
dato VARCHAR(100),
fx_alta DATETIME,
CONSTRAINT PK_DATOS PRIMARY KEY(Id)
);
DECLARE
@i INT,
@dato VARCHAR(100)
SET @i = 0
WHILE (@i < 100)
BEGIN
SET @i = @i + 1
SET @dato = 'Dato : ' + CAST(@i AS VARCHAR)
INSERT INTO DATOS (dato,fx_alta)
VALUES (@dato,GETDATE())
END;
SELECT * FROM DATOS;
Devuelve el número de filas afectadas por la última declaración. Si el número de filas es de más de 2 mil millones, utilizar ROWCOUNT_BIG .
Cuando borramos datos de una tabla, podemos obtener el número de filas que han sido afectadas por la instrucción a través de la variable @@RowCount.
BEGIN
SET @i = @i + 1
SET @dato = 'Dato : ' + CAST(@i AS VARCHAR)
INSERT INTO DATOS (dato,fx_alta)
VALUES (@dato,GETDATE())
END;
SELECT * FROM DATOS;
Devuelve el número de filas afectadas por la última declaración. Si el número de filas es de más de 2 mil millones, utilizar ROWCOUNT_BIG .
Cuando borramos datos de una tabla, podemos obtener el número de filas que han sido afectadas por la instrucción a través de la variable @@RowCount.
DELETE FROM DATOS WHERE Id=3;
SELECT @@ROWCOUNT;
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_Borradas TABLE
(
Id INT,
dato VARCHAR(100),
fx_alta DATETIME
)
DELETE
FROM DATOS
OUTPUT DELETED.* INTO @Filas_Borradas
WHERE Id = 17;
SELECT * FROM @Filas_Borradas;
transacciones explicitas.
|
REFERENCIA :
http://www.devjoker.com/contenidos/Tutorial-de-Transact-SQL/292/Transacciones-en-Transact-SQL.aspx
Comentarios
Publicar un comentario