1. Trang chủ
  2. » Luận Văn - Báo Cáo

bài tập về nhà hệ quản trị cơ sở dữ liệu 2

12 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề LAB 7 – HQTCSDL – Trigger-TransactionCursor-Temp Table
Tác giả Đặng Yến Linh
Người hướng dẫn Trần Anh Tuấn
Trường học ĐẠI HỌC QUỐC GIA – ĐẠI HỌC KHOA HỌC TỰ NHIÊN
Chuyên ngành Hệ quản trị cơ sở dữ liệu
Thể loại Bài tập về nhà
Năm xuất bản 2023
Định dạng
Số trang 12
Dung lượng 2,66 MB

Nội dung

Trigger: Viết trigger khi xóa một OrderId thì xóa luôn các thông tin của Order đó trong bảng OrderItem.. Nếu có Foreign Key Constraint xảy ra không cho xóa thì hãy xóa Foreign Key C

Trang 1

Bài tập về nhà Hệ quản trị cơ sở dữ liệu

Môn học Hệ quản trị cơ sở dữ liệu :

Giáo viên giảng dạy : Trần Anh Tuấn

Sinh viên thực hiện : 20280058 - Đặng Yến Linh

Chuyên ngành : Khoa học dữ liệu

11 July 2023

Trang 2

LAB 7 – HQTCSDL –

Trigger-Transaction-Cursor-Temp Table

Yêu cầu

1 Trigger:

 Viết trigger khi xóa một OrderId thì xóa luôn các thông tin của Order

đó trong bảng OrderItem Nếu có Foreign Key Constraint xảy ra không cho xóa thì hãy xóa Foreign Key Constraint đó đi rồi thực thi

 Viết trigger khi xóa hóa đơn của khách hàng Id = 1 thì báo lỗi không cho xóa sau đó ROLL BACK lại Lưu ý: Đưa trigger này lên làm Trigger đầu tiên thực thi xóa dữ liệu trên bảng Order

 Viết trigger không cho phép cập nhật Phone là NULL hay trong Phone

có chữ cái ở bảng Supplier Nếu có thì báo lỗi và ROLL BACK lại

2 Cursor:

 Viết một function với input vào Country và xuất ra danh sách các Id

và Company Name ở thành phố đó theo dạng sau

INPUT : ‘USA’

OUTPUT : Companies in USA are : New Orleans Cajun

Delights(ID:2) ; Grandma Kelly's Homestead(ID:3)

3 Transaction:

 Viết các dòng lệnh cập nhật Quantity của các sản phẩm trong bảng OrderItem mà có OrderID được đặt từ khách hàng USA Quantity được cập nhật bằng cách input vào một @DFactor sau đó Quantity được tính theo công thức Quantity = Quantity / @DFactor Ngoài ra còn xuất ra cho biết số lượng hóa đơn đã được cập nhật (Sử dụng TRANSACTION để đảm bảo nếu có lỗi xảy ra thì ROLL BACK lại)

4 Temp Table:

Viết TRANSACTION với Input là hai quốc gia Sau đó xuất thông tin là quốc gia nào có số sản phẩm cung cấp (thông qua SupplierId) nhiều hơn Cho biết luôn số lượng số sản phẩm cung cấp của mỗi quốc gia Sử dụng cả hai dạng bảng tạm (# và @)

Trang 3

Sử dụng Database NorthWind

Kiểm tra xem có khóa ngoại nào tham chiếu tới bảng mà

ta đang xét không :

Ví dụ table Customer có khóa ngoại tham chiếu tới là

FK_ORDER_REFERENCE_CUSTOMER

Trang 4

Viết trigger khi xóa một OrderId thì xóa luôn các thông tin của Order đó trong bảng OrderItem Nếu có Foreign Key Constraint xảy ra không cho xóa thì hãy xóa Foreign Key Constraint đó đi rồi thực thi.

Kiểm tra có khóa ngoại nào tham chiếu đến bảng OrderItem không :

OrderItem

Kiểm tra bảng OrderItem ban đầu có chứa 3 hóa đơn có OrderId bằng 5:

Trang 5

Xóa các hóa đơn có OrderId bằng 5 :

Kiểm tra lại bảng OrderItem, ta thấy không còn tồn tại hóa đơn nào có OrderId bằng 5

Trang 6

Viết trigger khi xóa hóa đơn của khách hàng Id = 1 thì báo lỗi không cho xóa sau đó ROLL BACK lại Lưu ý: Đưa trigger này lên làm Trigger đầu tiên thực thi xóa dữ liệu trên bảng Order.

Đưa trigger này lên làm Trigger đầu tiên thực thi xóa dữ liệu trên bảng Order

Xóa bỏ Foreign Key Constraint để kiểm nghiệm trigger

Xóa hóa đơn của khách hàng có Id bằng 1 :

Trang 7

Viết trigger không cho phép cập nhật Phone là NULL hay trong Phone có chữ cái ở bảng Supplier Nếu có thì báo lỗi

và ROLL BACK lại

Cập nhật số điện thoại là Null

Cập nhật số điện thoại có chữ cái

Trang 8

Câu 2: Viết một function với input vào Country và xuất ra danh sách các Id và Company Name ở thành phố đó theo dạng sau

INPUT : ‘USA’

OUTPUT : Companies in USA are : New Orleans Cajun Delights(ID:2) ; Grandma Kelly's Homestead(ID:3)

Trang 9

Câu 3: Viết các dòng lệnh cập nhật Quantity của các sản phẩm trong bảng OrderItem mà có OrderID được đặt từ khách hàng USA Quantity được cập nhật bằng cách input vào một @DFactor sau đó Quantity được tính theo công thức Quantity = Quantity / @DFactor Ngoài ra còn xuất ra cho biết số lượng hóa đơn đã được cập nhật (Sử dụng TRANSACTION để đảm bảo nếu có lỗi xảy ra thì ROLL BACK lại)

Trang 10

Câu 4: Viết TRANSACTION với Input là hai quốc gia Sau đó xuất thông tin là quốc gia nào có số sản phẩm cung cấp (thông qua SupplierId) nhiều hơn Cho biết luôn số lượng số sản phẩm cung cấp của mỗi quốc gia Sử dụng cả hai dạng bảng tạm (# và @)

Trang 12

Giả sử hai thành phố ta nhập vào là UK và USA ta được kết quả

Thử kiểm tra lại số sản phẩm của UK:

Ngày đăng: 16/08/2024, 17:34

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w