Trigger para delete
CREATE OR ALTER TRIGGER t_delete
ON UsuarioTarget
AFTER DELETE
AS
BEGIN
IF (ROWCOUNT_BIG() = 0)
RETURN;
select Codigo, Nombre, Puntos from deleted
Print 'Se realizó un delete'
END
GO
Introducción al curso
Cómo aprenderás sobre optimización de bases de datos en SQL Server
¿Por qué es importante optimizar tu base de datos?
Lista de requerimientos
Instalación de herramientas
Instalación de la base de datos
Analizar un plan de ejecución
Conociendo los índices
¿Cómo nos pueden ayudar los índices?
Analizar las consultas para crear índices
Cuál índice utilizar y cómo forzar uno en específico
¿Siempre son buenos los índices?
Optimización de consultas
Qué es Merge y cómo podemos utilizarlo
Distintas opciones de utilizar Merge
Qué es un Trigger y cómo podemos crearlo
Manejo de errores en trigger
Triggers a nivel administrativo
Qué es un Constraint y cómo funciona
Tablas versionadas
Utilizando Full Text Search para búsquedas
Queries más inteligentes
Tipos de funciones
Cómo funcionan las funciones tabla
Cómo funcionan las vistas
Procedimientos almacenados
Tablas temporales vs. tablas variables
Optimización de base de datos
Configuración de un Database Mail
Planes de mantenimiento: ordenar los índices en nuestra base de datos
Planes de mantenimiento: estrategia de respaldos
Planes de mantenimiento: log de base de datos con un tamaño controlado
Configurando TempDB
Monitoreo
Monitoreo con sp_who3
Monitoreo de actividades
Conclusión
Conclusión del curso
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
Aportes 10
Preguntas 3
Trigger para delete
CREATE OR ALTER TRIGGER t_delete
ON UsuarioTarget
AFTER DELETE
AS
BEGIN
IF (ROWCOUNT_BIG() = 0)
RETURN;
select Codigo, Nombre, Puntos from deleted
Print 'Se realizó un delete'
END
GO
Yo hice una tabla Log para que en caso de que ocurra cualquiera de los triggers que se pueda llevar un registro en caso de que algo pase se pueda reversar 😃
<code>
/*
--DROP TABLE UsuarioTarget_log
CREATE TABLE UsuarioTarget_log
(
[id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
Codigo INT,
Nombre VARCHAR(100),
Puntos INT,
DateChange DATETIME,
ActionChange VARCHAR(100),
UserChange VARCHAR(100)
)
--Select * From UsuarioTarget_log
*/
CREATE OR ALTER TRIGGER t_delete
ON UsuarioTarget
AFTER DELETE
AS
BEGIN
IF (ROWCOUNT_BIG() = 0)
RETURN;
Insert into UsuarioTarget_log
select Codigo, Nombre, Puntos, GETDATE() as'DateChange', 'DELETE AFTER' as 'ActionChange',SUSER_NAME() as 'UserChange'
from deleted
Print 'Se realizó un delete'
END
GO
He creado un Trigger que, al hacer un DELETE a mi tabla, me inserta automáticamente un registro nuevo en el que, tanto en la columna de **++Código ++**como en la de Puntos se genera un integer aleatorio entre en 1 y el 99, mientras que en el Nombre se genera un Varchar con el string “Aleatorio” y un número aleatorio, valga la redundancia.
¡Espero haberme explicado bien!
CREATE TRIGGER t_delete
ON [UsuarioTarget]
AFTER DELETE
AS
BEGIN
INSERT INTO [UsuarioTarget]
VALUES(FLOOR(RAND()*(99-1)+1), CONCAT('Aleatorio',CAST(FLOOR(RAND()*(99-1)+1) AS VARCHAR)), FLOOR(RAND()*(99-1)+1))
Print '¡Se ha borrado un registro y se ha creado otro aleatorio!'
END
Trigger es un a especie de SP que esta relacionado con una tabla que se ejecuta cuando se produce un insert, update o delete en la tabla.
Sirve para ejecutar varias acciones como notificaciones, validadores, otros.
create trigger t_delete
on dbo.UsuarioSource
after delete
as
begin
if (ROWCOUNT_BIG()= 0)
RETURN;
Select Codigo,Nombre,Puntos
from deleted
print 'Successful delete'
end
CREATE TRIGGER t_DELETE
ON UsuarioTarget
AFTER DELETE
AS
BEGIN
IF(ROWCOUNT_BIG() = 0)
RETURN;
SELECT Codigo, Nombre, Puntos
FROM INSERTED
Print 'Se realizo el DELETE'
END
Los triggers son unas herramientas poderosas, pero hay que tener mucho cuidado, por que puede ser un cuello de botella
CREATE OR ALTER TRIGGER t_delete
ON UsuarioTarget
AFTER DELETE
AS
BEGIN
IF (ROWCOUNT_BIG() = 0)
RETURN;
select Codigo, Nombre, Puntos from deleted
Print 'Se realizó un delete'
END
GO
CREATE OR ALTER TRIGGER T_DELETE
ON UsuarioTarget
AFTER DELETE
AS
BEGIN
IF (ROWCOUNT_BIG() = 0)
RETURN;
select Codigo, Nombre, Puntos from deleted
Print ‘Se realizó un DELETE’
END
Reto realizado:
--RETO: Hacer el Trigger del Delete
CREATE TRIGGER t_delete
ON UsuarioTarget
AFTER DELETE
AS
BEGIN
IF(ROWCOUNT_BIG() = 0)
RETURN;
SELECT Codigo,Nombre,Puntos
FROM INSERTED
PRINT 'Se realizó el delete'
END
DELETE FROM UsuarioTarget
WHERE Codigo = 7;
CREATE OR ALTER TRIGGER t_Delete
ON UsuarioTarget
AFTER DELETE
AS
BEGIN
IF (ROWCOUNT_BIG() = 0)
RETURN;
select Codigo, Nombre, Puntos from inserted
Print 'Se realizó un delete'
END
GO
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.