-
Trong thực tế người ta ít khi XÓA thật sự dữ liệu trong bảng, thường chỉ là đánh dấu xóa mà thôi (vd thêm field DELETED, default =0, nếu delete thì bật lên =1 …)
Dữ liệu lịch sữ rất cần cho tra cứu, report, phân tích thống kê, BI, …
2.Nếu thật sự vẫn muốn xóa thì có 1 số cách như:
=>Dùng SQL, từ ứng dụng (vd: C# program)
Khi gọi delete sẽ gọi lần lượt 3 lệnh từ con nhất đến cha:
Delete from DIEM where mahv in (select mahv from hocvien where malop=X)
Delete from HOCVIEN where malop=X
Delete from LOP where malop=X
=>Dùng: ON DELETE CASCADE trên foreign key
Bạn thêm thuộc tính ON DELETE CASCADE trên FK của HoacVien và Diem.
Khi bạn xóa 1 Lop, tất cả các dữ liệu con có quan hệ sẽ được/bị xóa tự động.
Cách này thật sự ko khuyến khích sử dụng trên Production Database vì tất nguy hiểm !!!
Xem vd (tiếng Anh) trên SQL Server.
=>Dùng: TRigger
Thật sự viết Trigger ko qua khó, chỉ cần xem cú pháp tạo trigger, trong đó bỏ câu DELETE vào là xong. Trigger sẽ đặt trên table Lop và HocVien.
Cách này nếu làm đúng cũng sẽ có kết quả tương tự cách trên (ON DELETE CASCADE), khá là “nguy hiểm”.