Thông tin tài liệu:
Tham khảo tài liệu nhập môn db2 express – c part 9, công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
Nhập môn DB2 Express – C part 9Nh p môn H qu n tr c s d li u DB2 168Hình 15.1 – Ví d v b%y tr cTrong hình 15.1, b%y “defalt_class_end” s, b%y tr c l nh khi INSERT SQL c th chi n trong b ng cl_sched. B ng này là m t ph n c a c s d li u SAMPLE, ban có tht o và th ki m tra b%y này khi k t n i v i c s d li u này. Bi n “n” trong nh nghac a b%y s, i di n cho giá tr m i c a l nh INSERT, giá tr s, chèn vào. B%y này s,ki m tra s h p l c a các giá tr chèn vào. N u c t “ending” không có giá tr gì khi chèn,thì b%y này s, m b o ch c ch n là có giá tr c a c t “starting” c ng 1 c chèn vào.Các l nh sau giúp ta ki m tra b%y này C:\Program Files\IBM\SQLLIB\BIN>db2 insert into cl_sched (class_code, day, starting) values (abc,1,current time) DB20000I The SQL command completed successfully. C:\Program Files\IBM\SQLLIB\BIN>db2 select * from cl_sched CLASS_CODE DAY STARTING ENDING ---------- ------ -------- -------- 042:BF 4 12:10:00 14:00:00 553:MJA 1 10:30:00 11:00:00 543:CWM 3 09:10:00 10:30:00 778:RES 2 12:10:00 14:00:00 044:HD 3 17:12:30 18:00:00 abc 1 11:06:53 12:06:53 6 record(s) selected.Th t c b%y “validate_sched” d i ây cho phép m r ng hàm b%y “default_class_end” ã mô t tr c ây. Xin nh c l i r ng, b n có th t o ra nó và ki m tra nó d a vào c sd li u SAMPLE. CREATE TRIGGER validate_sched NO CASCADE BEFORE INSERT ON cl_sched REFERENCING NEW AS n FOR EACH ROW MODE DB2SQL BEGIN ATOMIC -- supply default value for ending time if nullNh p môn H qu n tr c s d li u DB2 169 IF (n.ending IS NULL) THEN SET n.ending = n.starting + 1 HOUR; END IF; -- ensure that class does not end beyond 9pm IF (n.ending > 21:00) THEN SIGNAL SQLSTATE 80000 SET MESSAGE_TEXT=class ending time is beyond 9pm; ELSEIF (n.DAY=1 or n.DAY=7) THEN SIGNAL SQLSTATE 80001 SET MESSAGE_TEXT=class cannot be scheduled on a weekend; END IF; ENDB%y sauB%y sau c kích ho t sau khi các SQL triggering th c hi n thành công. Các thao táctrong b%y này có th kích ho t các b%y khác (s n i t ng c cho phép n 16 m c).B%y sau h tr các thao tác INSERT, UPDATE và DELETE. D i ây là ví d c a m tb%y sau CREATE TRIGGER audit_emp_sal AFTER UPDATE OF salary ON employee REFERENCING OLD AS o NEW AS n FOR EACH ROW MODE DB2SQL INSERT INTO audit VALUES ( CURRENT TIMESTAMP, Employee || o.empno || sal- ary changed from || CHAR(o.salary) || to || CHAR(n.salary) || by || USER)Trong ví d này thì th t c b%y audit_emp_sal c s d ng th c hi n vi c ki mtra trên c t salary c a b ng employee. Khi m t ai ó t o s thay i trong c t này thì o n mã này s, th c hi n vi c ghi thông tin v vi c thay i liên quan n b ng Salaryvào trong bàng khácg&i là audit. T i dòng “OLD as o NEW as n ” ch- ra ti n t “o” nàys, c dùng i di n giá tr c. ho c giá trì t+n t i trong b ng, và ti n t “n” s, cs d ng i di n giá tr m i sau ó t* câu l nh UPDATE. Nh v#y, “o.salary” miêu tgiá tr c. ho c giá tr t+n t i trong b ng Salary còn “n.salary” miêu t giá tr c c#pnh#t m i vào c t d li u Salary.B%y s ki n thay thB%y thay th c nh ngha trên các khung nhìn (view). / nh ngha m t cách logic b%ynày s, th c hi n vi c c#p nh#t cho các l nh SQL triggering. Ví d nh , n u b n th chi n m t thao tác c#p nh#t trên m t khung nhìn, b%y thay th s, c th c thi th chi n vi c c#p nh#t các b ng g c mà các khung nhìn này th hi n.Các th t c b%y không c t o t* DB2 Developer Workbench. Chúng có th ct ot* trung tâm i u khi n ho c t* các công c dòng l nh khác (Command Window,Command Line Processor, ho c Command Editor)Nh p môn H qu n tr c s d li u DB2 170Bài t p nhanh #10 - Kh i t o m t b%y b6ng Trung tâm i u khi n.M c tiêuB%y là m t i t ng c s d li u c s d ng hoàn thành công vi c kinh doanhm t cách ch t ch, khi x y ra thay i d li u trên b ng (chèn, s a, xóa). Trong bài t#pnhanh này, b n s, t o m t b%y b ng vi c s d ng Trung tâm i u khi n. Cái b%y này s,l u nh#t ký bán hàng trong b ng SALES (bán hàng) cho m c ích ki m tra s sách. B ns, ghi vào nh#t ký bán hàng mã c a ng i bán hàng (user ID) cùng v i th i i m bán.Th t c: 1. M Trung tâm i u khi n. 2. V i bài t#p nhanh này, b n s, c n kh i t o m t b ng ph c s d ng ghi nh#t ký bán hàng. Kh i t o m t b ng theo các thu c tính sau: Tên b ng: saleslog (nh#t ký bán hàng) Ct u tiên: Tên: userid (mã ) Ki u d liêu: VARCHAR(128) Các thu c tính khác: NOT NULL C t th hai: Tên: daytime (th i i m ) Ki u d li u: TIMESTAMP Các thu c tính khác: NOT NULL G i ý: Kh i t o b ng này s d ng CREATE TABLE có trong c a s nh#p l nh, ho c s d ng Create table wizard t* Trung tâm i u khi n. 3. T* Trung tâm i u khi n, m r ng tài li u c s d li u EXPRESS. Nh p chu t ph i trong th m c Trigger, và ch&n m c “Crea ...