Cách Insert 1 lần vào tất cả các bảng trong database

Mình có cơ sở dữ liệu gồm 16 bảng, có quan hệ với nhau thông qua các khóa, dữ liệu của bảng này liên quan đến bảng kia (Ví dụ: Dữ liệu ở bảng A sau khi được chèn vào sẽ sinh ra id ở bảng A gọi là IdBangA; IdBangA này lại là đầu vào của id khác ở bảng B). Giờ mình muốn tạo một form để insert dữ liệu một lần vào đồng thời tất cả các bảng trên thì làm như thế nào cả nhà nhỉ.
Ví dụ cụ thể:

Người(ID_nguoi, HoTen, QueQuan)
Người vay(ID_nguoivay, ID_nguoi, A, B)
Người_cho_vay (ID_nguoichovay, ID_nguoi, C,D,E)
Đơn vị(ID_donvi, Madonvi, TenDonVi)
Nguoichovay_donvi(Id_nguoichovay_donvi, ID_Nguoi, ID_donvi, Chucvu, G, H, J)

A, B, C, D, E, G, H, J là ví dụ một số trường khác trong bảng

=> XML (hoặc 1 dạng nào bạn có thể xử lý được)=> storeprocedure => insert vào lần lượt

Bạn có thể dùng store hoặc viết code insert bình thường mà, ví dụ, sau khi nhập liệu đầy đủ, bạn insert bảng Người trước, sau đó lấy ID_Nguoi vừa insert, rồi insert tiếp vào bảng Người Vay…

1 Like

nếu bạn viết store procedure thì làm như sau:

1 - viết câu truy vấn insert dữ liệu vào tblNguoi

INSERT INTO tblNguoi (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

2- sau khi insert thành công, thì bạn viết câu truy vấn để lấy ID_Nguoi vừa mới insert vào bảng tblNguoi

SELECT MAX(ID_Nguoi) FROM tblNguoi

3- viết câu truy vấn insert dữ liệu vào tblNguoiVay. Và cứ làm như vậy với các bảng tương tự

1 Like

Có nên tính đến trường hợp mình đang lưu giữ liệu hay đang get dữ liệu ra thì cũng có người thực hiện thao tương tự làm nhầm lẫn kết quả người này với người kia không các bác???. Dù ít thì khả năng là vẫn có phải không?

SQL Server đủ thông minh để tự phân luồng dữ liệu ra vào cho trường hợp này nên bạn cứ yên tâm.

1 Like

Cám ơn các bạn đã tư vấn nhé, mình sẽ thử xem thế nào

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?