Chương 3. Lập trình trong SQL Server TRIGGER

Slides:



Advertisements
Similar presentations
5.
Advertisements

AI CŨNG PHẢI HỌC LÀM NGƯỜI
CHƯƠNG III: NGÂN HÀNG VÀ CÁC NGHIỆP VỤ NGÂN HÀNG.
Cài đặt Moodle Cài đặt Moodle trên môi trường Windows Cục CNTT-Bộ GD&ĐT.
Cách trộn thư trong Office 2003 Ứng dụng để làm giấy khen, giấy mời.
Rèn luyện nghiệp vụ sư phạm 3
KIỂM TRA BÀI CŨ 1) Thế nào là đơn thức ? Cho ví dụ về đơn có biến là x, y, có bậc là 3. 2.a) Thế nào là bậc của đơn thức có hệ số khác 0 ? Muốn nhân hai.
Javascript Giáo viên: TS. Trương Diệu Linh Bộ môn Truyền thông & Mạng
Orientation Các vấn đề về IT.
Giáo viên: Nguyễn Ngọc Thúy Hằng Đơn vị: Trường THPT Lê Quý Đôn
CHƯƠNG 5. CẤU TẠO ĐƯỜNG KIẾN TẠO. Nội dung chính KHÁI NIỆM CHUNG CÁC DẠNG CẤU TẠO ĐƯỜNG KIẾN TẠO CÁCH ĐO ĐẠC VÀ THU THẬP CÁC SỐ LIỆU CẤU TẠO ĐƯỜNG.
LOGO QUẢN LÝ LƯU LƯỢNG VÀ ĐIỀU KHIỂN TẮC NGHẼN 1 Giảng viên hướng dẫn: TS Lê Trung Quân Nhóm thực hiện: Trần Thị Mỹ Thú - CH
CHƯƠNG 5: PHP & MySQL (tiếp)
TRAO ĐỔI KINH NGHIỆM PHƯƠNG PHÁP ÔN LUYỆN & KỸ NĂNG THI TOEIC
CƠ CHẾ QUẢN LÝ KINH TẾ TRƯỚC THỜI KÌ ĐỔI MỚI (1975 – 1986)
37 Lê Quốc Hưng, Quận 4, Tp. Hồ Chí Minh ​ (08) ĐỀ XUẤT POC CÁC GIẢI PHÁP GIÁM SÁT HẠ TẦNG TRÊN NỀN TẢNG CÔNG.
1 BÀI 6 BẤM CÁP VÀ CHIA SẺ DỮ LIỆU MẠNG. 2 Nội Dung  Bấm cáp xoắn đôi đúng chuẩn Phương pháp bấm cáp chuẩn A Phương pháp bấm cáp chuẩn B  Kết nối máy.
TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C/C++
Thị trường mới ThS. Nguyễn Văn Thoan
Chương 1: mạng máy tính và Internet
1. Quyền Admistrator, quyền Standard hoặc Limited 2. Kiểm tra kết nối mạng nội bộ, Internet 3. Một số nội dung của Quy nội bộ số 72/QyĐ-KTNB 4. L ư u ý.
Kính Chào Cô và Các b ạ n thân m ế n !!!!!. HÌNH THỨC CHÍNH THỂ CỦA NHÀ NƯỚC CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM VÀ MỘT SỐ NƯỚC TRÊN THẾ GIỚI. Thuyết trình.
Các hệ mã truyền thống Cryptography Криптография Trần Nguyên Ngọc
Internet & E-Commerce
Ngôn ngữ lập trình C/C++
GIÁO TRÌNH ĐÀO TẠO TRƯỜNG ĐẠI HỌC SÀI GÒN
SỬ DỤNG EXCEL ĐỂ TRÍCH KHẤU HAO TSCĐ
Đầu tiên chỉ là 1 giao thức đơn giản
CHƯƠNG 9 PHẦN MỀM POWERPOINT
© 2007 Thomson South-Western
Hướng dẫn viết đề cương nghiên cứu
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG C++
Chương 8 KẾT NỐI VỚI SQL SERVER & ỨNG DỤNG TRÊN C#
Vấn đề ngôn ngữ lập trình
Chương 4: Thị trường tài chính
Ràng buộc toàn vẹn (Integrity Constraint)
Hệ quản trị Cơ sở dữ liệu Giới thiệu
Flow of Control.
Chương 1: Khái quát về dự án đầu tư.
Ra quyết định kinh doanh
TIẾP CẬN CÁC CHƯƠNG TRÌNH KHOA HỌC VÀ CÔNG NGHỆ HỖ TRỢ NGÀNH DƯỢC
Theo mặc định toàn bộ dung lượng dùng lưu trữ, các thư mục hiện có trong các Partition , các dịch vụ hệ thống đã được chia sẽ cho mọi người được phép sử.
Policy Analysis Tools of the Trade NMDUC 2009.
Quản lý hệ thống file.
Cấu hình đơn giản cho Router
Bài giảng môn Tin ứng dụng
Ring ? Bus ? ? Mesh ? Start ?. Ring ? Bus ? ? Mesh ? Start ?
Môn: Lập trình Hướng đối tượng (Object Oriented Programming)
Chương 6 Các chiến lược tiếp thị
TÀI LIỆU GIẢNG DẠY IC3 GS4 SPARK
HỆ ĐIỀU HÀNH MẠNG.
ỨNG DỤNG HIV INFO 3.0 QUẢN LÝ SỐ LIỆU NGƯỜI NHIỄM HIV/AIDS
File Transfer Protocol (FTP) là cơ chế truyền tin dưới dạng tập tin (file). Thông qua giao thức TCP/IP FTP là dịch vụ đặc biệt vì nó dùng tới 2 port Port.
Chapter 05 BẢO MẬT TRONG HỆ THỐNG WLAN
Phần 2.
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
BÀI 29: LỌC DỮ LIỆU TỪ DANH SÁCH DỮ LIỆU
1. Đổi chỗ trực tiếp – Interchange Sort
CÁC PHƯƠNG PHÁP XÁC ĐỊNH CHI PHÍ (phần B)
Tổng quan về Hệ điều hành
Lớp DH05LN GIÁO VIÊN PHỤ TRÁCH ThS. NGUYỄN QUỐC BÌNH
KỸ NĂNG LUYỆN TRÍ NHỚ ThS. Huỳnh Phạm Ngọc Lâm.
Please click through slides at your leisure
AUDIO DROPBOX - TUTORIALS
2D Transformations Các phép biến đổi 2D
SỞ GIÁO DỤC VÀ ĐÀO TẠO ĐIỆN BIÊN TRƯỜNG THPT MÙN CHUNG
Company LOGO CĂN BẢN VỀ MẠNG NGUYEN TAN THANH Xem lại bài học tại
Quản trị rủi ro Những vấn đề căn bản Nguyễn Hưng Quang 07/11/2015 NHẬT HOA IC&T.
I II III Sinh hoạt kinh tế Chỉ huy, quyết định Nhà Nước cộng sản I. KHÁI NIỆM.
TRƯỜNG ĐẠI HỌC NGOẠI THƯƠNG CƠ SỞ II TẠI TP. HỒ CHÍ MINH HỘI NGHỊ KHOA HỌC CƠ SỞ II “BÁO CÁO HOẠT ĐỘNG ĐI THỰC TẾ CỦA GIẢNG VIÊN CSII, NĂM HỌC ”
Presentation transcript:

Chương 3. Lập trình trong SQL Server TRIGGER

Đặt vấn đề Trigger TaiKhoan (MaTK, ChuTK, SoDuTK) 16111 Trần Tấn Hùng 1.000.000 16222 Nguyễn Thị Thúy 5.000.000 16333 Lê Linh Chi 2.000.000 TaiKhoan (MaTK, ChuTK, SoDuTK) GiaoDichRutTien MaGD MaTK ViTriGD NgayGD SoTienGD 01011301 16111 ATM 01/01/2013 1.000.000 01041301 01/04/2013 2.000.000 01041302 16222 QGD 4.500.000 01041303 16333 3.000.000 05051301 05/05/2013 500.000 GiaoDichRutTien MaGD MaTK ViTriGD NgayGD SoTienGD 01011301 16111 ATM 01/01/2013 1.000.000 01041301 01/04/2013 2.000.000 01041302 16222 QGD 4.500.000 01041303 16333 3.000.000 05051301 05/05/2013 500.000 06051301 06/05/2013 4.000.000 R1: “Số tiền tối thiểu mỗi lần rút là 50.000” R2: “Số tiền tối đa mỗi lần rút: Nếu rút tại quầy giao dịch, số tiền rút không nhiều hơn số dư tài khoản Nếu rút tại ATM, số tiền rút không nhiều hơn số dư tài khoản và không nhiều hơn 3.000.000” R3: “Sau khi rút tiền, cập nhật lại số dư tài khoản: SoDuTK=SoDuTK-SoTienGD” GiaoDichRutTien (MaGD, MaTK, ViTriGD, NgayGD, SoTienGD ) 2.000.000 2.000.000 3.000.000 2.000.000 Trigger

Nội dung bài học Trigger là gì Cú pháp cài đặt trigger Hoạt động của trigger

Trigger là gì? Trigger là một loại store procedure được dùng để thực hiện một số xử lý một cách tự động khi có thao tác insert, delete hoặc update trên dữ liệu. Một số xử lý cụ thể: Kiểm tra ràng buộc dữ liệu (phức tạp) Những tính toán nghiệp vụ cần thiết có liên quan Lưu vết các hoạt động Biến cố kích hoạt trigger: Insert Update Delete Không giống như đối tượng khác trong SQL server nhu thu tuc, ham, trigger khong duoc goi thực thi một cách tuong minh mà tự động thực hiện

Inserted và Deleted Xử lý của trigger thường cần sử dụng đến hai bảng tạm: Inserted + Deleted Khi insert: dòng dữ liệu vừa thêm được chèn vào Inserted. Khi delete: dòng dữ liệu vừa thêm được chèn vào Deleted Khi update: dòng dữ liệu trước khi sửa chèn vào Deleted, dòng dữ liệu sau khi sửa chèn vào Inserted Được bộ nhớ chính, HQT tạo và xóa một cách tự động Có cấu trúc giống như bảng (table) mà trigger định nghĩa trên đó Chỉ tồn tại trong thời gian trigger đang xử lý Cục bộ cho mỗi trigger

Cú pháp cài đặt trigger CREATE TRIGGER Tên_Trigger ON Tên_Table AFTER(FOR) | INSTEAD OF INSERT, DELETE, UPDATE AS Các_lệnh_của_Trigger In’sted

Các loại trigger After(For): Trigger được gọi thực hiện sau khi thao tác delete/ insert/ update tương ứng đã được thực hiện thành công Các dòng mới được thêm chứa đồng thời trong bảng dữ liệu và bảng inserted Các dòng bị xoá chỉ nằm trong bảng deleted (đã bị xoá khỏi bảng dữ liệu) Có thể quay lui thao tác đã thực hiện bằng lệnh rollback transaction Instead of: Trigger được gọi thực hiện thay cho thao tác delete/ insert/ update tương ứng Các dòng mới được thêm chỉ chứa trong bảng inserted Các dòng bị chỉ định xoá nằm đồng thời trong bảng deleted và bảng dữ liệu (dữ liệu không bị xoá). Trigger Instead of thường được dùng để xử lý cập nhật trên view

Hoạt động của trigger Yêu cầu cập nhật Chèn dữ liệu vào (Insert, Update, Delete) Yêu cầu cập nhật Inserted Chèn dữ liệu vào Inserted / Deleted Deleted Có trigger loại Instead of Không có trigger loại Instead of Thực hiện Trigger loại INSTEAD OF Cập nhật dữ liệu CSDL Có trigger loại After Instead of chi co 1 After(for) có the co nhieu Thực hiện Trigger loại AFTER Không có trigger loại After Xóa Inserted/Deleted

Ví dụ TaiKhoan(MaTK, ChuTK, SoDu) GiaoDichRutTien(MaGD, MaTK, ViTriGD, NgayGD, SoTienGD) Ràng buộc R2: Số tiền tối đa mỗi lần rút: Nếu rút tại quầy giao dịch, số tiền rút không nhiều hơn số dư tài khoản Nếu rút tại ATM, số tiền rút không nhiều hơn số dư tài khoản và không nhiều hơn 3.000.000 Bảng tầm ảnh hưởng Cần cài đặt trigger cho thao tác thêm và sửa GiaoDịchRutTien

Ví dụ

Bật/Tắt hiệu lực của trigger Tắt/Bật 1 trigger đã tạo Tắt/Bật tất cả các trigger đã tạo ALTER TABLE TaiKhoanGiaoDich DISABLE/ENABLE TRIGGER trg_ThemGDRutTien ALTER TABLE TaiKhoanGiaoDich DISABLE/ENABLE TRIGGER ALL

Lưu ý Lệnh tạo trigger phải là lệnh đầu tiên trong một lô (query batch) Trên một bảng có thể định nghĩa nhiều trigger after(for) cho mỗi thao tác, nhưng chỉ có thể định nghĩa một trigger instead of cho mỗi thao tác Không thể định nghĩa trigger instead of update/ delete trên bảng có cài đặt khoá ngoại dạng update cascade/ delete cascade

Một số câu hỏi 1. Cần phải viết trigger cho cả 3 biến cố kích hoạt: Insert/Update/Delete không?  Lập bảng tầm ảnh hưởng để xác định 2. Một bảng vừa có constraint vừa có trigger, loại nào sẽ thực thi trước?  Nếu có trigger loại intead of: chỉ thực hiện trigger Ngược lại: constraint thực hiện trước, trigger thực hiện sau 3. Vấn đề cập nhật một lúc nhiều dòng dữ liệu giải quyết như thế nào?  Dùng cursor

Ví dụ trigger loại AFTER TaiKhoan MaTK ChuTK SoDuTK 16111 Trần Tấn Hùng 1.000.000 16222 Nguyễn Thị Thúy 5.000.000 16333 Lê Linh Chi 2.000.000 GiaoDichRutTien MaGD MaTK ViTriGD NgayGD SoTienGD 01011301 16111 ATM 01/01/2013 1.000.000 01041301 01/04/2013 2.000.000 01041302 16222 QGD 4.500.000 01041303 16333 3.000.000 05051301 05/05/2013 500.000 GiaoDichRutTien MaGD MaTK ViTriGD NgayGD SoTienGD 01011301 16111 ATM 01/01/2013 1.000.000 01041301 01/04/2013 2.000.000 01041302 16222 QGD 4.500.000 01041303 16333 3.000.000 05051301 05/05/2013 500.000 06051301 06/05/2013 INSERTED MaGD MaTK ViTriGD NgayGD SoTienGD 06051301 16222 ATM 06/05/2013 3.000.000

Ví dụ trigger loại INSTEAD OF TaiKhoan MaTK ChuTK SoDuTK 16111 Trần Tấn Hùng 1.000.000 16222 Nguyễn Thị Thúy 5.000.000 16333 Lê Linh Chi 2.000.000 GiaoDichRutTien MaGD MaTK ViTriGD NgayGD SoTienGD 01011301 16111 ATM 01/01/2013 1.000.000 01041301 01/04/2013 2.000.000 01041302 16222 QGD 4.500.000 01041303 16333 3.000.000 05051301 05/05/2013 500.000 GiaoDichRutTien MaGD MaTK ViTriGD NgayGD SoTienGD 01011301 16111 ATM 01/01/2013 1.000.000 01041301 01/04/2013 2.000.000 01041302 16222 QGD 4.500.000 01041303 16333 3.000.000 05051301 05/05/2013 500.000 06051301 06/05/2013 INSERTED MaGD MaTK ViTriGD NgayGD SoTienGD 06051301 16222 ATM 06/05/2013 3.000.000

Ví dụ chèn nhiều dòng TaiKhoan GiaoDichRutTien GiaoDichRutTien MaTK ChuTK SoDuTK 16111 Trần Tấn Hùng 1.000.000 16222 Nguyễn Thị Thúy 5.000.000 16333 Lê Linh Chi 2.000.000 GiaoDichRutTien MaGD MaTK ViTriGD NgayGD SoTienGD 01011301 16111 ATM 01/01/2013 1.000.000 01041301 01/04/2013 2.000.000 01041302 16222 QGD 4.500.000 01041303 16333 3.000.000 05051301 05/05/2013 500.000 GiaoDichRutTien MaGD MaTK ViTriGD NgayGD SoTienGD 01011301 16111 ATM 01/01/2013 1.000.000 01041301 01/04/2013 2.000.000 01041302 16222 QGD 4.500.000 01041303 16333 3.000.000 05051301 05/05/2013 500.000 08051301 08/05/2013 08051302 INSERTED MaGD MaTK ViTriGD NgayGD SoTienGD 08051301 16111 ATM 08/05/2013 1.000.000 08051302 16333 3.000.000