ccc

Mostrando entradas con la etiqueta Triggers. Mostrar todas las entradas
Mostrando entradas con la etiqueta Triggers. Mostrar todas las entradas

Triggers: SQL Server

Se pueden crear fácilmente desde MSSMS o directamente mediante SQLs.

Hay que tener en cuenta que SQL Server cada vez que hace una inserción en una tabla crea una tabla temporal (que luego borra) llamada Inserted.

Si hace un delete crea una tabla temporal llamada deleted

Si hace un update crea las tablas temporal deleted e inserted.

Para crear los triggers sería:
create trigger TR_productoInsertado
on productos for insert
AS
declare @cod_prod varchar(4)
select @cod_prod = cod_prod from inserted
insert into historial values (getdate(), @cod_prod, 'insertado', system.user)

create trigger TR_productoEliminado
on productos for delete
AS
declare @cod_prod varchar(4)
select @cod_prod = cod_prod from inserted
insert into historial values (getdate(), @cod_prod, 'eliminado', system.user)

create trigger TR_productoActualizado
on productos for update
AS
declare @cod_prod varchar(4)
select @cod_prod = cod_prod from inserted
insert into historial values (getdate(), @cod_prod, 'actualizado', system.user)

Importante: de las tablas temporales te permite extraer cualquier campo salvo el ID

Más información en:
https://www.youtube.com/watch?v=jLk4BtAKZUM

Triggers: MySQL

Desde el phpmyadmin es muy fácil desde el apartado de triggers.

Aunque también puedes hacerlo directamente con SQL:

CREATE TRIGGER `insertToLogsClienteTrasAlta` AFTER INSERT ON `clientes` FOR EACH ROW insert into logscliente values (NULL, new.id, 'Insertado', NOW());

CREATE TRIGGER `insertToLogsClienteTrasUpdate` AFTER UPDATE ON `clientes` FOR EACH ROW insert into logscliente values (NULL, new.id, 'Actualizado', NOW());

CREATE TRIGGER `insertToLogsClienteTrasBorrado` BEFORE DELETE ON `clientes` FOR EACH ROW insert into logscliente values (NULL, old.id, 'Borrado', NOW());