Activar trigger cuando se hace un Delete | SQL Server # 46
HTML-код
- Опубликовано: 10 фев 2025
- En este vídeo vemos como activar un trigger cuando se realiza un DELETE. en este caso vemos que al activarse se realiza el código que queremos en lugar del propio delete. esto por que usamos la sentencia "Instead of Delete" , si quisiéramos eliminar el dato tendríamos que poner FOR DELETE como en caso anterior del Insert.
SUSCRIBETE ►[ goo.gl/Qde7Wm ]◄ GRACIAS POR TU APOYO Y TU LIKE
Donativos: goo.gl/us1GDG
Pagina Web: www.visualestud...
Google +:plus.google.co...
Facebook: / tutorialesdeprogramaci...
Grupo de programadores: / 195368293970359
mas cursos en el canal!
gracias!
Muchas gracias por tus cursos son muy buenos.A mi tambien me gustarian mas ejemplos .
Me gustaría que hicieras más ejemplos con Trigers porfavor. Saludos!
Gracias por tan interesante video, my pregunta es la siguiente: cómo lo haría para actualizar?
create trigger tr_Upd_Cliente on Cliente after update
--TRIGGER ACTUALIZAR
@carlos
GO
CREATE TRIGGER tr_cliente_actualizar
ON Clientes
FOR UPDATE
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO Log_Historial_Cliente (nombre, fecha, descripcion)
SELECT nombre, GETDATE(), 'Se actualizó un registro en la tabla Clientes'
FROM inserted --Tabla temporal
se usa tanto para insert o update
END
UPDATE CLIENTES SET nombre = 'Ramón' WHERE ID = 14
muy bueno el tutorial pero en el vídeo anterior dices que el "Instead of" ejecuta la acción programada en el trigger en ves de la solicitada, en este caso muestras en el log que se elimino pero no la eliminas en realidad. deberías hacer el trigger con el "for delete"
En la descripción del video lo explica
Si deseara impedir que elimine algo de dos tablas seleccionadas como seria ?
Es posible hacer un log en el que así como se almacenó los dados de la otra tabla, también me diga que usuario intentó hacer la eliminación?
cual seria la sintaxis para hacer el TRIGGER pero esta vez con UPDATE
En el la tabla persona se sigue mostrando el registro aunque en la tabla log_historial aparezca como eliminado
+computolibre
esto es por que en la definición del trigger le digo que sea "instead of delete" que significa que en lugar de eliminar realice la acción que le pongo abajo, así que si quieres que lo elimine entonces necesitas poner solo "for delete" como hice anteriormente con el insert.
@@Tecnobinaria Te ayudo en esta respuesta. Adicional lo veo para un control de seguridad cuando personas ajenas a esa función de eliminar intentan hacerlo, no se jecute y se guarde un log con el usuario y la fecha hora exacta para tener un mejor control.
Estaba realizando las pruebas, pero me sucedió algo, si por error inserte 2 filas con los mismos datos, no me permite eliminar los registros duplicados; Error source : Microsoft. SqlServer.Management.DataTools Error Message: The row value(s) update or deletede either do not make the row uniquie or ther alter multiplique rows (2 rows)
Hola como puedo hacer un triggers que por ejemplo: de la tabla "temporal" donde guardo los pedidos del cliente y al cerrar la venta treslade eso datos a "detalleventa" PERO durante ese traslado un triggers que me este modificando el stock en inventario por cada producto que se este pasando al "detalleventa"? Espero me puedas ayudar y muchas gracias por tus videos son muy buenos
Hola Eduardo verdad?, primero déjame decirte que están buenos tus videos, me gustan.
tengo una duda dime si el "not count on" es para que no se vea que se ha el (1 row(s) affected) del trigger y el "instead of" es para que no se ejecute la accion que se pone después de éste (en este caso el "delete") y en ves se ejecute lo que pones en el trigger ¿por que cuando ejecutas el delete al final aparece el (1 row(s) affected)? ¿se eliminó el registro?
Por favor contesta, saludos :)
Fernando Timaná Hola , ese mensaje es del delete normal no de el del trigger, si no se estuviera ocultando se mostrarían 2 de esos mensajes
porfa pasen el codigo
No se si mas personas se an dado cuenta pero en el momento en que borras un elemento de la tabla 'x' aparece en la tabla 'y' que un elemento ha sido borrado pero cuando ingresas a la tabla 'x te das con la sorpresa de ningun elemento se ha eliminado, eso y otra cosa me a llamdo la atencion y generado dudas.'
+Edkaem es cierto hasta ahora lo veo!
esto es por que en la definición del trigger le digo que sea "instead of delete" que significa que en lugar de eliminar realice la acción que le pongo abajo, así que si quieres que lo elimine entonces necesitas poner solo "for delete" como hice anteriormente con el insert.