Có, bạn có thể sử dụng thủ tục được lưu trữ để chèn vào hai bảng trong một truy vấn duy nhất. Đầu tiên chúng ta hãy tạo một bảng -
mysql> tạo bảng DemoTable (StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentFirstName varchar (20)); Truy vấn OK, 0 hàng bị ảnh hưởng (0,56 giây)
Đây là truy vấn để tạo bảng thứ hai -
mysql> tạo bảng DemoTable2 (ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY, ClientName varchar (20), ClientAge int); Truy vấn OK, 0 hàng bị ảnh hưởng (0,76 giây)
Sau đây là truy vấn để tạo thủ tục được lưu trữ để chèn vào hai bảng đã tạo ở trên -
mysql> DELIMITER // mysql> TẠO THỦ TỤC insert_into_twoTables (name varchar (100), age int) BẮT ĐẦU CHÈN VÀO GIÁ TRỊ DemoTable (StudentFirstName); CHÈN VÀO CÁC GIÁ TRỊ DemoTable2 (ClientName, ClientAge) (tên, tuổi); END // Truy vấn OK, 0 hàng bị ảnh hưởng (0,14 giây) mysql> DELIMITER;
Bây giờ hãy gọi thủ tục đã lưu trữ với sự trợ giúp của lệnh CALL -
mysql> call insert_into_twoTables ('Tom', 38); Truy vấn OK, 1 hàng bị ảnh hưởng, 1 cảnh báo (0,41 giây)
Kiểm tra xem bản ghi có được chèn vào cả hai bảng hay không.
Truy vấn để hiển thị tất cả các bản ghi từ bảng đầu tiên như sau -
mysql> select * từ DemoTable;
Điều này sẽ tạo ra kết quả sau -
+ ----------- + ------------------ + | StudentId | StudentFirstName | + ----------- + ------------------ + | 1 | Tom | + ----------- + ------------------ + 1 hàng trong bộ (0,00 giây)
Sau đây là truy vấn để hiển thị tất cả các bản ghi từ bảng thứ hai -
mysql> select * from DemoTable2;
Điều này sẽ tạo ra kết quả sau -
+ ---------- + ------------ + ----------- + | ClientId | ClientName | ClientAge | + ---------- + ------------ + ----------- + | 1 | Tom | 38 | + ---------- + ------------ + ----------- + 1 hàng trong bộ (0,00 giây)