01/10/2018, 16:53
Xin hướng dẫn xử lý lỗi khi dùng Trigger trong SQL
Xin chào mọi người. Hiện tại em đang học về sử dụng SQL em có bài tập liên quan đến Trigger mà em đang không biết xử lý thế nào cho hợp lý. Mong các cao nhân tìm giải pháp giúp em với ạ
Đây là thiết kế cơ sở dữ liệu của bài:

Yêu cầu: Viết trigger không cho phép xóa các cuốn sách vẫn còn trong kho (số lượng > 0)
Em đã thử viết như sau nhưng không được:
create Trigger xoa_sach on sach
FOR DELETE
AS
BEGIN
declare @count int
select @count= count(s.sach_id) from sach as s,kho_sach as k WHERE k.so_luong >0 and s.sach_id=k.sach_id
if (@count>0)
BEGIN
PRINT 'Không được phép xóa các cuốn sách vẫn còn trong kho (số lượng > 0)'
ROLLBACK TRAN
END
END
Mong mọi người dùng đỡ ạ
Bài liên quan
Không được là không được là không được gì?
- Xóa không được khi =0?
Vấn đề ở đây là mã sách (sach_id) đâu? Lúc xóa thì cần tham số là mã sách thì mới duyệt xem mã sách đó còn hay không.
Như cách chọn của bạn thì bạn đang chọn tất cả mã sách có sl > 0.
=> Chỉ xóa được khi toàn bộ sách trong kho =0.
Thế theo anh thì bài này làm thế nào ạ
Làm thế nào thì mình nói rồi:
Bạn có biết đến bảng tạm tên là inserted và deleted không, nó lưu thông tin của dữ liệu vừa xóa được để dùng trong trigger.
Vâng em cảm ơn anh ạ
Anh ơi bài này em làm thế này có đúng không ạ
Viết trigger chỉ cho phép xóa một danh mục sách khi không còn cuốn sách nào thuộc chuyên mục này.
create Trigger xoa_loai_sach on loai_sach
FOR DELETE
AS
BEGIN
declare @count int =0
select @count= count(loai_sach_id) from deleted where loai_sach_id in (select loai_sach_id from sach where sach_id in (select sach_id from kho_sach where so_luong>0))