Mình đang phân vân tại sao bảng HoaDon và bảng ChiTietHoaDon lại bị tách ra. Hơn nữa lại không có khóa ngoại để biệt là quan hệ của 2 bảng này với nhau là gì nữa. Vì sao bạn không dùng 1 bảng HoaDon(MaDH, NgayLap, SoLuong, DonGia, MaNhanVien). Khi bạn giải được bài toán tối ưu CSDL thì việc insert 1 lúc nhiều bảng sẽ không còn nữa vì mình đoán NhanVien bạn có sẵn rồi, chỉ insert ở 2 bảng kia thôi.
Còn việc insert cùng lúc vào nhiều bảng(cũng có nhiều TH phải làm thế này) thì bạn hiểu hơi sai vấn đề 1 chút. Đó là ở 1 thời điểm bạn chỉ nên(ở hầu hết các ngôn ngữ thì bạn CHỈ ĐƯỢC) insert 1 bảng thôi và thực hiện tuần tự cho đến khi dữ liệu của bạn đã được lưu đầy đủ trong DB.
VD: ở 1 form khi submit cần xử lý và insert dữ liệu vào bảng A, B và update dữ liệu ở bảng C. Lúc này bạn phải dựa vào dữ liệu ràng buộc của bảng để xác định cần insert A, B trước. Tuy nhiên mình sẽ nói đơn giản ở mức ko có ràng buộc hoặc mặc định mình đã đúng ở bước xác định ràng buộc:
function process_form_XXX(){
B1. Insert dữ liệu vào bảng A, lấy ID của bảng A để sử dụng cho việc insert ở bảng B(nếu cần)
B2. Insert dữ liệu vào bảng B, lấy ID của bảng B để sử dụng cho việc update ở bảng C(nếu cần)
B3. Update dữ liệu vào bảng C
}
Vậy function có tên process_form_XXX sẽ đáp ứng nhu cầu “cùng lúc” của bạn mặc dù trên thực tế nó chạy tuần tự từng yêu cầu nhỏ. Chứ ko có kiểu “cùng lúc” như bạn hiểu đâu. ![:smiley: :smiley:](https://daynhauhoc.com/images/emoji/twitter/smiley.png?v=5)