Trigger cơ bản trong môn DB2 (Hệ quản trị cơ sở dữ liệu của oracle)

Trigger là cái gì đó hơi xa lạ với các bạn phải không, nó rất phổ biến trong DB ví dụ như Mysql, SQL Server,… và bây giừo là DB2. TRigger là một cái bẫy sự kiện của một hay nhiều bảng, khi chúng ta Del, Update, insert bảng 1 bảng nào đó thì cái bẫy ấy đuọc kích hoạt.

Đây sẽ là ví dụ điển hình:

Ta có bảng sau:

 

Sau khi có ai mà xoá hay thêm một bản ghi nào thuộc cái bảng này thì lập tức nó sẽ lưu lại thao tác đó vào 1 bảng tabautosave như thế này:

 

 

Còn đây là câu lệnh Trigger cho actiion INSERT:

Create or Replace Trigger saveWhenInsertProduct
After Insert on TBLSANPHAM
For Each Row
INSERT INTO TBLAUTOSAVE(username, timechange,action) VALUES (current user,current timestamp,’Thêm’);

 

Còn đây là câu lệnh Trigger cho action DELETE:

— Luu thong tin nguoi dung va tac dong cua nguoi dung khi xoa.
Create or Replace Trigger saveWhenDelProduct
After Delete on TBLSANPHAM
For Each Row
INSERT INTO TBLAUTOSAVE(username, timechange,action) VALUES (current user,current timestamp,N’Xoá’);

 

OK các bạn có thể tham khảo một vài cái trigger khác trong bài này.

CÁM ƠN CÁC BẠN!

Advertisements

Trigger trong môn DB2 – oracle

Anh em có thể tham khảo vài đoạn làm việc với trigger sau:

Anh em ko hiểu hỏi luôn nhé!

—- SAN PHAM
–Chon sp
SELECT * FROM TBLSANPHAM;
— Them san pham
INSERT INTO TBLSANPHAM VALUES (‘sp3′,N’bàn phím’,N’chiếc’,’234234′,’DM2′);
INSERT INTO TBLSANPHAM VALUES (‘sp4′,N’bàn phím sáng’,N’chiếc’,’234234′,’DM3′);
INSERT INTO TBLSANPHAM VALUES (‘sp5′,N’màn hình’,N’chiếc’,’234234′,’DM4′);
INSERT INTO TBLSANPHAM VALUES (‘sp6′,N’Camera’,N’chiếc’,’234234′,’DM4′);
INSERT INTO TBLSANPHAM VALUES (‘sp7′,N’Chuột 1′,N’chiếc’,’90000′,’DM1′);
INSERT INTO TBLSANPHAM VALUES (‘sp10′,N’CPU’,N’cái’,’90000′,’DM1′);
–xoa
Delete From TBLSANPHAM where PK_SMASP=’sp5′;
Delete From TBLSANPHAM where PK_SMASP=’sp’;

——-DANH MUC
–Chon danh muc
SELECT * FROM TBLDANHMUC;
— Them Danh muc
INSERT INTO TBLDANHMUC (PK_MADM,tenDM) VALUES (‘DM4′,N’Màn hình 3′);
— TRIGGER
–chon bang tblautosave

select * from TBLAUTOSAVE;
–DELETE FROM TBLAUTOSAVE;

— Luu thao tac nguoi dung khi them
— Luu thong tin nguoi dung va tac dong cua nguoi dung khi them, sua, xoa.
Create or Replace Trigger saveWhenInsertProduct
After Insert on TBLSANPHAM
For Each Row
INSERT INTO TBLAUTOSAVE(username, timechange,action) VALUES (current user,current timestamp,’Thêm’);

— Luu thong tin nguoi dung va tac dong cua nguoi dung khi xoa.
Create or Replace Trigger saveWhenDelProduct
After Delete on TBLSANPHAM
For Each Row
INSERT INTO TBLAUTOSAVE(username, timechange,action) VALUES (current user,current timestamp,N’Xoá’);

— Xoa khi sp la cuoi cung trong Dm
Create or Replace Trigger tudongxoa
After Delete On TBLSANPHAM
Referencing OLD as O
For Each Row
WHEN(0=(SELECT count(*)FROM TBLSANPHAM where FK_MADM = O.FK_MADM))
DELETE FROM TBLDANHMUC WHERE TBLDANHMUC.PK_MADM = O.FK_MADM;

— Neu thay doi id danh muc cua 1 san pham thi cung thay doi id cac sp khac cung loai
Create or Replace Trigger changeAllMaDM
After Update On TBLSANPHAM
Referencing OLD as bangcu NEW as bangmoi
For Each Row
UPDATE TBLSANPHAM SET FK_MADM=bangmoi.FK_MADM WHERE TBLSANPHAM.FK_MADM = bangcu.FK_MADM;

update TBLSANPHAM SET FK_MADM = ‘DM3’ WHERE PK_SMASP = ‘sp3’;
select * from TBLSANPHAM;

— Bang tam de luu hoa don bi xoa
CREATE TABLE tmpHoadon (
ID Bigint NOT NULL PRIMARY KEY Generated always as Identity (Start with 1, Increment by 1),
PK_SMAHD VARCHAR(10),
FK_SMAKH VARCHAR(10),
TNGAYMUA DATE,
TNGAYGIAO DATE
);

— Trigger Luu lai nhung ban ghi ma user xoa trong bang HOADON
Create or Replace Trigger tmpTableDeleted
After Delete On TBLHOADON
Referencing OLD as bangcu
For Each Row
INSERT INTO TMPHOADON (PK_SMAHD,FK_SMAKH,TNGAYMUA,TNGAYGIAO)
VALUES (bangcu.PK_SMAHD,bangcu.FK_SMAKH,bangcu.TNGAYMUA,bangcu.TNGAYGIAO);

SELECT * FROM TMPHOADON;

SELECT * FROM TBLHOADON;

DELETE FROM TBLHOADON WHERE PK_SMAHD = ‘MHD01’;