• 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 Orde
Trang 1Bài tậ p v ề nhà Hệ qu ản trị cơ sở dữ liệu
Môn học : Hệ ản trị cơ sở dữ qu 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
Trang 2LAB 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
• 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 3S ử 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ó óa ngoại tham chiếu tới lkh à
FK_ORDER_REFERENCE_CUSTOMER
Trang 4Viế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ế đến bảng OrderItem ông :u kh
Không có khóa ngoại nào tham chiếu đến OrderItem
Trang 5Kiểm tra bảng OrderItem ban đầu có chứa 3 hóa đơn có OrderId bằng 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 6Viế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ữ ệu trên bảng Order.li
Trang 7Đư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 :
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
Trang 8Cập nhật số điện thoại là Null
Cập nhật số điện thoại có chữ cái
Trang 9Câ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 10Câ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 11Câu 4: ết TRANSACTION với Input là hai quốc gia Sau đó xuất thông tin là Vi 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ố ợng số sản phẩm cung cấp của mỗi quốc gia Sử dụng cả hai dạng lư
bảng tạm (# và @)
Trang 13Giả sử hai thành phố ta nhập vào l UK và à USA ta được kết quả
Thử ểm tra lại số sản phẩm của UK:ki