You are on page 1of 10

TRIGGERS

MySQL

1) After insert (HS_2000)

-- by Aleksander Xhuvani 
DROP TRIGGER IF EXISTS `FP_after_ins`;
CREATE DEFINER=`root`@`localhost` TRIGGER `FP_after_ins`
AFTER INSERT ON `flete_porosi` 
FOR EACH ROW 
BEGIN
-- declaration 
DECLARE idart integer; 
DECLARE idpor integer; 
DECLARE t_sasia integer; 
DECLARE t_stok integer; 
DECLARE pag bit(1); 
-- initialisation 
SET t_sasia = NEW.Sasia; 
SET idart = NEW.ID_Art_fk; 
SET idpor = NEW.ID_Por_fk; 
SET t_stok = (SELECT Stock FROM artikull WHERE ID_Art = idart); 
SET pag = (SELECT Ka_Paguar FROM porosi WHERE ID_Por = idpor);
-- update  
IF pag = 1 THEN 
UPDATE artikull SET Stock = t_stok - t_sasia WHERE ID_Art = idart; 
END IF; 
END

1) After insert (VOYAGE_2000)

CREATE TRIGGER `TR_after_insert` 
CREATE DEFINER=`root`@`localhost` TRIGGER `TR_after_insert`
AFTER INSERT ON `rezervim` 
FOR EACH ROW 
BEGIN 
-- declaration 
DECLARE total_bileta int; 
DECLARE bileta_shitur int; 
DECLARE bileta_mbetur int; 
DECLARE idu int; 
DECLARE pag nvarchar(30); 
-- initialisation 
SET idu = NEW.id_udhetim_fk; 
SET pag = NEW.paguar; 
SET bileta_shitur = NEW.n_bileta; 
SET total_bileta =(SELECT n_v_a FROM udhetim WHERE id_udhetim = idu); 
IF pag <>'Nuk ka paguar' THEN 
SET bileta_mbetur = total_bileta -bileta_shitur; 
IF bileta_mbetur > 0 THEN
  UPDATE udhetim SET n_v_a = bileta_mbetur WHERE id_udhetim = idu; 
END IF; 
END IF; 
END

2) After delete (HS_2000)

-- by Aleksander Xhuvani 
DROP TRIGGER IF EXISTS `FP_after_del`;
CREATE DEFINER=`root`@`localhost` TRIGGER `FP_after_ins`
AFTER DELETE ON `flete_porosi` 
FOR EACH ROW 
BEGIN 
-- declaration
DECLARE idart integer; 
DECLARE idpor integer; 
DECLARE t_sasia integer; 
DECLARE t_stok integer; 
DECLARE pag bit(1); 
-- initialisation 
SET t_sasia = OLD.Sasia; 
SET idart = OLD.ID_Art_fk; 
SET idpor = OLD.ID_Por_fk; 
SET t_stok = (SELECT Stock FROM artikull WHERE ID_Art = idart); 
SET pag = (SELECT Ka_Paguar FROM porosi WHERE ID_Por = idpor); 
-- update 
IF pag = 1 THEN 
UPDATE artikull SET Stock = t_stok + t_sasia WHERE ID_Art = idart; 
END IF; 
END

2) After delete (VOYAGE_2000)

CREATE TRIGGER `TR_after_delete` 
CREATE DEFINER=`root`@`localhost` TRIGGER `TR_after_delete`
AFTER DELETE ON `rezervim` 
FOR EACH ROW 
BEGIN 
-- declaration 
DECLARE total_bileta int; 
DECLARE bileta_shitur int; 
DECLARE bileta_mbetur int; 
DECLARE idu int; 
DECLARE pag nvarchar(30); 
-- initialisation 
SET idu = OLD.id_udhetim_fk; 
SET pag = OLD.paguar; 
SET bileta_shitur = OLD.n_bileta; 
SET total_bileta =(SELECT n_v_a FROM udhetim WHERE id_udhetim = idu); 
IF pag <>'Nuk ka paguar' THEN 
SET bileta_mbetur = total_bileta + bileta_shitur; 
IF bileta_mbetur > 0 THEN
  UPDATE udhetim SET n_v_a = bileta_mbetur WHERE id_udhetim = idu; 
END IF; 
END IF; 
END

3) After update (HS_2000)

-- by Aleksander Xhuvani 
DROP TRIGGER IF EXISTS `FP_after_update`;
CREATE DEFINER=`root`@`localhost` TRIGGER `FP_after_ins`
AFTER DELETE ON `flete_porosi` 
FOR EACH ROW 
BEGIN 
-- declaration
DECLARE idart integer; 
DECLARE idpor integer; 
DECLARE t_sasia integer; 
DECLARE t_stok integer; 
DECLARE t_sasia_old integer;
DECLARE pag bit(1); 
-- initialisation 
SET t_sasia = NEW.Sasia; 
SET t_sasia_old = OLD.Sasia;
SET idart = NEW.ID_Art_fk; 
SET idpor = NEW.ID_Por_fk; 
SET t_stok = (SELECT Stock FROM artikull WHERE ID_Art = idart); 
SET pag = (SELECT Ka_Paguar FROM porosi WHERE ID_Por = idpor); 
-- update 
IF pag = 1 THEN
UPDATE artikull SET Stock = t_stok - t_sasia+t_sasia_old WHERE ID_Art = idart;
END IF;  
END

3) After update (VOYAGE_2000)

CREATE TRIGGER `TR_after_update` 
CREATE DEFINER=`root`@`localhost` TRIGGER `TR_after_update`
AFTER UPDATE ON `rezervim` 
FOR EACH ROW 
BEGIN 
-- declaration 
DECLARE total_bileta int; 
DECLARE bileta_shitur_new int;
DECLARE bileta_shitur_old int; 
DECLARE bileta_mbetur int; 
DECLARE idu int; 
DECLARE pag nvarchar(30); 
-- initialisation 
SET idu = NEW.id_udhetim_fk; 
SET pag = NEW.paguar; 
SET bileta_shitur_new = NEW.n_bileta;
SET bileta_shitur_old = OLD.n_bileta; 
SET total_bileta =(SELECT n_v_a FROM udhetim WHERE id_udhetim = idu); 
IF pag <>'Nuk ka paguar' THEN 
SET bileta_mbetur = total_bileta + bileta_shitur_old - bileta_shitur_new; 
IF bileta_mbetur > 0 THEN
  UPDATE udhetim SET n_v_a = bileta_mbetur WHERE id_udhetim = idu; 
END IF; 
END IF; 
END
SQL Server

1) After insert
USE [HS_2000_v5]
GO
/****** Object: Trigger [dbo].[FP_INSER1] Script Date: 07/03/2022 22:57:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
------------------------------------
----- by Aleksander Xhuvani --------
------------------------------------
ALTER TRIGGER [dbo].[FP_INSER1]
ON [dbo].[FLETE_POROSI]
FOR INSERT
AS
BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from


-- interfering with SELECT statements.
SET NOCOUNT ON;

SELECT * FROM inserted

DECLARE @sasia smallint


DECLARE @stoku int
DECLARE @idart int
DECLARE @idpor int
DECLARE @pag bit

SELECT @sasia = Sasia,@idart = #ID_Art, @idpor = #ID_Por


FROM deleted

SET @stoku =
(SELECT ARTIKULL.Stock
FROM ARTIKULL
WHERE ID_Art = @idart)

SET @pag =
(SELECT POROSI.Ka_Paguar
FROM POROSI
WHERE ID_Por = @idpor)

IF @pag = 1
BEGIN
UPDATE ARTIKULL
SET Stock = @stoku-@sasia
WHERE ID_Art = @idart
END

PRINT 'Procedura pas DELETE u kry !!'

END

2) After delete
USE [HS_2000_v5]
GO
/****** Object: Trigger [dbo].[FP_DELETE] Script Date: 07/03/2022 22:58:43 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
---------------------------------
----- by Aleksander Xhuvani -----
---------------------------------
ALTER TRIGGER [dbo].[FP_DELETE]
ON [dbo].[FLETE_POROSI]
FOR DELETE
AS
BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from


-- interfering with SELECT statements.
SET NOCOUNT ON;

SELECT * FROM deleted

DECLARE @sasia smallint


DECLARE @stoku int
DECLARE @idart int
DECLARE @idpor int
DECLARE @pag bit

SELECT @sasia = Sasia,@idart = #ID_Art, @idpor = #ID_Por


FROM deleted

SET @stoku =
(SELECT ARTIKULL.Stock
FROM ARTIKULL
WHERE ID_Art = @idart)

SET @pag =
(SELECT POROSI.Ka_Paguar
FROM POROSI
WHERE ID_Por = @idpor)

IF @pag = 1
BEGIN
UPDATE ARTIKULL
SET Stock = @stoku+@sasia
WHERE ID_Art = @idart
END

PRINT 'Procedura pas DELETE u kry !!'

END
3) After update
USE [HS_2000_v5]
GO
/****** Object: Trigger [dbo].[FP_UPDATE] Script Date: 07/03/2022 22:38:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
---------------------------------
----- by Aleksander Xhuvani -----
---------------------------------
ALTER TRIGGER [dbo].[FP_UPDATE]
ON [dbo].[FLETE_POROSI]
AFTER UPDATE
AS
IF (UPDATE (Sasia))
BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from


-- interfering with SELECT statements.
SET NOCOUNT ON;

SELECT * FROM inserted


SELECT * FROM deleted

DECLARE @sasia smallint


DECLARE @sasia_old smallint
DECLARE @stoku int
DECLARE @idart int
DECLARE @idpor int
DECLARE @pag bit

SELECT @sasia = Sasia,@idart = #ID_Art, @idpor = #ID_Por


FROM inserted

SELECT @sasia_old = Sasia


FROM deleted
WHERE #ID_Art = @idart AND #ID_Por = @idpor

SET @stoku =
(SELECT ARTIKULL.Stock
FROM ARTIKULL
WHERE ID_Art = @idart)

SET @pag =
(SELECT POROSI.Ka_Paguar
FROM POROSI
WHERE ID_Por = @idpor)

IF @pag = 1
BEGIN
UPDATE ARTIKULL
SET Stock = @stoku - @sasia + @sasia_old
WHERE ID_Art = @idart
END
PRINT 'Procedura pas UPDATE u kry !!'
END
MS ACCESS (Macro)

1) After INSERT
2) After delete (Macro)
3) After update- (Macro)

You might also like