Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Qué es un Trigger y cómo podemos crearlo

13/31
Recursos

Aportes 10

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

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