Mình vướng một số vấn đề nhờ Các Bạn giải quyết hộ.
cơ sở dữ liệu của Mình gồm 3 bảng : Phiếu Xuất, Chi tiêt Phiếu Xuất , Tồn Kho. và em có một trigger liên quan đến chi tiết phiếu xuất để tự động update số lượng vào trong kho.
trong relation giữa Phiếu xuất và Chi Tiết phiếu xuất em để thuộc tính "insert and update specification" ->"delete rule" là "cascade".
khi trong phiếu xuất có 1 chi tiết phiếu xuất thì có thể xóa dữ liệu tốt và vẫn đảm bảo trigger chạy được.
nhưng khi một Phiếu xuất mà có từ 2 chi tiết phiếu xuất trở nên thì không thể xóa được dữ liệu ở bảng Phiếu xuất.
lỗi thông báo là : " Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, , >= or when the subquery is used as an expression ."
Mình nghĩ lỗi là do khi xóa dữ liệu ở bảng phiếu nhập sẽ kích hoạt lệnh xóa ở chi tiết phiếu nhập( trả lại nhiều giá trị) . lệnh xóa ở chi tiết phiếu nhập sẽ kích hoạt trigger cập nhật số lượng hàng trong kho mà trigger cập nhật hàng trong kho chỉ nhận 1 giá trị nến sẽ phát hiện lỗi không thể xóa được)
Xin nhờ mọi người tư vấn hộ mình hướng giải quyết với
Bạn kiểm tra trong trigger, xem chỗ nào có subquery mà trả về > 1 giá trị hay không.
Ví dụ nếu bạn viết như sau:
trong đó B có hơn 1 giá trị ID thì sẽ xuất hiện lỗi này.Code:select ID, Name from A where ID = (select ID from B)
Đời vẽ tôi tên mục đồng, rồi vẽ thêm con ngựa hồng, từ đó lên đường phiêu linh.
http://sql-note.blogspot.com/