Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để chèn vào hai bảng bằng một truy vấn MySQL?

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. Đầu tiên chúng ta hãy tạo một bảng -

mysql> create table DemoTable
(
   StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   StudentFirstName varchar(20)
);
Query OK, 0 rows affected (0.56 sec)

Đây là truy vấn để tạo bảng thứ hai -

mysql> create table DemoTable2
(
   ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   ClientName varchar(20),
   ClientAge int
);
Query OK, 0 rows affected (0.76 sec)

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> CREATE PROCEDURE insert_into_twoTables(name varchar(100),age int)
      BEGIN
         INSERT INTO DemoTable(StudentFirstName) VALUES(name);
         INSERT INTO DemoTable2(ClientName,ClientAge) VALUES(name,age);
      END
      //
   Query OK, 0 rows affected (0.14 sec)
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);
Query OK, 1 row affected, 1 warning (0.41 sec)

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 * from DemoTable;

Điều này sẽ tạo ra kết quả sau -

+-----------+------------------+
| StudentId | StudentFirstName |
+-----------+------------------+
| 1         | Tom              |
+-----------+------------------+
1 row in set (0.00 sec)

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 row in set (0.00 sec)