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’;

Advertisements

7 thoughts on “Trigger trong môn DB2 – oracle

  1. Bạn có thể cho mình xin nguyên database của ví dụ của bạn được không ? Vừa bảng vừa code trigger. Bạn gửi qua email của mình :dinhhang29@gmail.com. Thank bạn

    Like

  2. Mình làm khóa luận tốt nghiệp DB2 mà không biết cách dùng trigger, bạn có thể gửi cho mình nguyên Database của bạn cho mình được không? Bạn có ví dụ nào về bẫy lỗi không? Mail của mình: dhgiang19293@gmail.com

    Like

Để lại comment đê!

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s