Professional Documents
Culture Documents
Is 401 - He Quan Tri CSDL - 2022 - Lec 03
Is 401 - He Quan Tri CSDL - 2022 - Lec 03
VIEW
VIEW không được xem là một cấu trúc lưu trữ dữ liệu tồn tại
trong cơ sở dữ liệu.
www.themegallery.com
Chương 3: VIEW – PROCEDURE - TRIGGER
VIEW
www.themegallery.com
Chương 3: VIEW – PROCEDURE - TRIGGER
PROCEDURE
PROCEDURE
PROCEDURE
PROCEDURE
PROCEDURE
EXECUTE PRO_Name;
Hoặc
EXEC PRO_Name;
Chương 3: VIEW – PROCEDURE - TRIGGER
PROCEDURE
PROCEDURE
PROCEDURE
Tham số đầu vào: Trong Procedure có tham số đầu vào, các giá
trị được truyền vào từ bên ngoài và được sử dụng trong quá
trình thực thi của Procedure.
Khi gọi Procedure này, phải cung cấp giá trị cho các tham số
này.
www.themegallery.com
Chương 3: VIEW – PROCEDURE - TRIGGER
PROCEDURE
PROCEDURE
PROCEDURE
PROCEDURE
PROCEDURE
PROCEDURE
1. Tạo Procedure với tham số đầu vào là MAHD, LOAI hiển thị danh sách các hóa
đơn: MAHD, NGAYHD, NGAYGH.
2. Tạo Procedure với tham số đầu vào là Tháng của NGAYHD, Tháng của
NGAYGH hiển thị danh sách: MAKH, TENKH, MAHD, NGAYHD, NGAYGH.
3. Tạo Procedure với tham số đầu vào là MAKH hiển thị số lượng hóa đơn của mỗi
khách hàng.
4. Tạo Procedure cập nhật SLTON cho mặt hàng có mã là MH01 tăng thêm 10.
5. Tạo Procedure có tham số đầu vào là MAHANG, SLTON cập nhật SLTON cho
mặt hàng bất kỳ khi được truyền tham số.
Tên file: IS401 T_26012024_MASV Nộp bài vào chat zoom
Chương 3: VIEW – PROCEDURE - TRIGGER
PROCEDURE
Khi Procedure được thực thi, giá trị của các tham số OUTPUT
này sẽ được gán và trả về cho việc gọi thủ tục.
PROCEDURE
Ví dụ 1:
CREATE PROCEDURE SLHOADON_KHACHHANG
@MAKH Char(5),
@SLHOADON INT OUTPUT
AS
BEGIN
SELECT @SLHOADON = COUNT(*)
FROM HOADON
WHERE MAKH = @MAKH
Chương 3: VIEW – PROCEDURE - TRIGGER
PROCEDURE
EXEC SLHOADON_KHACHHANG
@MAKH = 'KH01',
PROCEDURE
www.themegallery.com
Chương 3: VIEW – PROCEDURE - TRIGGER
PROCEDURE
9 - Tạo Procedure với tham số OUTPUT là số dòng thỏa mãn điều kiện
Ví dụ 2: Tạo thủ tục thống kê số hàng có SLTON >=X
CREATE PROCEDURE SELECT_SLTON
(@SLTON INT, @SOHANG_COUNT INT OUTPUT)
AS
Gán số lượng bản ghi
BEGIN
được trả về cho tham số
SELECT *
FROM DMHANG
WHERE SLTON>= @SLTON;
SELECT @SOHANG_COUNT = @@ROWCOUNT; Là 1 biến HT trả về số record
END; được đọc ở câu lệnh phía trước
Chương 3: VIEW – PROCEDURE - TRIGGER
PROCEDURE
Thực thi Procedure với tham số OUTPUT thõa mãn điều kiện
Chú ý: Nếu không khai báo OUTPUT sau biến @COUNT thì giá trị của
biến @COUNT sẽ là NULL .
Chương 3: VIEW – PROCEDURE - TRIGGER
PROCEDURE
Tham số đầu ra là những giá trị được trả về từ thủ tục sau khi
nó được gọi.
Chức năng chính của tham số đầu ra là cung cấp kết quả hoặc
thông tin từ thủ tục cho phần gọi thủ tục.
Tham số đầu ra có thể được sử dụng để trả về giá trị tính toán
dữ liệu từ cơ sở dữ liệu.
Chương 3: VIEW – PROCEDURE - TRIGGER
PROCEDURE
PROCEDURE
PROCEDURE
PROCEDURE
Ví dụ 1: Tạo Procedure cập nhật SLNHAP của mã hàng MH01 tăng thêm 5
PROCEDURE
PROCEDURE
PROCEDURE
www.themegallery.com
Chương 3: VIEW – PROCEDURE - TRIGGER
www.themegallery.com
REVIEW PROCERDURE
Database: QUAN LY DIEM SINH VIEN
KHOA (MAKHOA, TENKHOA)
LOP (MALOP, TENLOP, MAKHOA)
SINHVIEN (MASV, HOTEN, NGAYSINH, PHAI, QUEQUAN, MALOP)
MONHOC (MAMH, TENMH, SOTC)
KQHT (MASV, MAMH, DIEM)
Yêu cầu:
1. Tạo Procedure cho biết số lớp của mỗi khoa?
2. Tạo Procedure cho biết số sinh viên của mỗi lớp?
3. Tạo Procedure thống kê tổng số tín chỉ của mỗi sinh viên?
4. Tạo Procedure thống kê số SV nam, nữ của mỗi lớp?
www.themegallery.com
Chương 3: VIEW – PROCEDURE - TRIGGER
TRIGGER
1. Trigger là gì ?
Trigger là một đối tượng trong cơ sở dữ liệu được thiết lập để thực
hiện một hoặc nhiều hành động trong cơ sở dữ liệu khi có sự kiện
xảy ra.
Trigger thực thi một cách tự động khi một trong ba câu lệnh Insert,
Update, Delete làm thay đổi dữ liệu trên bảng có chứa trigger.
Trigger thường được sử dụng để kiểm tra tính hợp lệ của dữ liệu khi
thêm, sửa hoặc xóa dữ liệu trong cơ sở dữ liệu.
Chương 3: VIEW – PROCEDURE - TRIGGER
TRIGGER
Tạo Trigger
CREATE TRIGGER <Trigger_Name>
ON <Table_Name>
FOR {INSERT | DELETE | UPDATE}
AS
BEGIN
<SQL Satement>
END;
Chương 3: VIEW – PROCEDURE - TRIGGER
TRIGGER
TRIGGER
Khi trigger được thực hiện, SQL tự động tạo ra 2 bảng tạm
với cùng cấu trúc với bảng chứa trigger.
INSERTED chứa dữ liệu mới khi chúng ta thực thi câu
lệnh Insert hoặc câu lệnh Update.
• DELETED chứa những bản ghi bị xoá khi chúng ta thực
thi câu lệnh Delete hoặc chứa dữ liệu cũ khi chúng ta thực
thi câu lệnh Update.
Chương 3: VIEW – PROCEDURE - TRIGGER
TRIGGER
Chương 3: VIEW – PROCEDURE - TRIGGER
TRIGGER
www.themegallery.com
Chương 3: VIEW – PROCEDURE - TRIGGER
Chương 3: VIEW – PROCEDURE - TRIGGER
TRIGGER
Ví dụ:
Khi có khách đặt hàng thì tự động cập nhật lại SLNHAP
trong bảng DMHANG.
Chương 3: VIEW – PROCEDURE - TRIGGER
TRIGGER
Giải pháp:
Khi khách đặt hàng ta chỉ có 3 loại thao tác chính với CSDL là :
Insert, Delete, Update // Tạo 3 trigger.
TRIGGER
TRIGGER
Chú ý: Cần phải thiết lập các chính sách bảo mật rõ ràng để giữ an
toàn cho các trigger, chẳng hạn như: giới hạn các quyền thực thi và xử
lý truy cập cho các trigger.
Các trigger cũng nên được mã hóa để người dùng không thể truy cập
trực tiếp vào mã nguồn của chúng.
Các biện pháp bảo mật như kiểm tra đầu vào và đầu ra cũng cần được
áp dụng để đảm bảo rằng các trigger không bị lỗ hổng bảo mật.
TRIGGER CÓ SỬ DỤNG
IF.....ELSE
CREATE TRIGGER trigger_name
ON table_name
FOR INSERT
AS
BEGIN
IF <condition>
BEGIN
-- Do something if condition is true
END
ELSE
BEGIN
-- Do something if condition is false
END
END;
TRIGGER CÓ SỬ DỤNG
IF.....ELSE
CREATE TRIGGER trg_DatHangĐK
IF @slnhap >= @soluongdat
ON DATHANG
BEGIN
FOR INSERT
UPDATE DMHANG
AS
SET SLNHAP = @slnhap -
BEGIN
@soluongdat
DECLARE @madonhang CHAR(10),
WHERE MAHANG = @mahang
@mahang CHAR(5), @soluongdat INT,
END
@slnhap INT
ELSE
BEGIN
SELECT @mahang = MAHANG,
PRINT(N'Số lượng đặt vượt quá số
@soluongdat = SOLUONGDAT,
lượng nhập!!! Không thực hiện được')
@madonhang = MADONHANG
ROLLBACK
FROM inserted
END
END;
SELECT @slnhap = SLNHAP
FROM DMHANG
WHERE MAHANG = @mahang