Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL에서 한 번에 두 테이블에 레코드를 삽입하기 위해 저장 프로시저를 사용할 수 있습니까?

<시간/>

예, 저장 프로시저를 사용하여 단일 쿼리에서 두 테이블에 삽입할 수 있습니다. 먼저 테이블을 생성하겠습니다 -

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

다음은 두 번째 테이블을 생성하는 쿼리입니다 -

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)

다음은 위에서 만든 두 테이블에 삽입할 저장 프로시저를 만드는 쿼리입니다. -

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 ;

이제 CALL 명령의 도움으로 저장 프로시저를 호출하십시오 -

mysql> call insert_into_twoTables('Tom',38);
Query OK, 1 row affected, 1 warning (0.41 sec)

레코드가 두 테이블에 모두 삽입되었는지 확인하십시오.

첫 번째 테이블의 모든 레코드를 표시하는 쿼리는 다음과 같습니다. -

mysql> select *from DemoTable;

이것은 다음과 같은 출력을 생성합니다 -

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

다음은 두 번째 테이블의 모든 레코드를 표시하는 쿼리입니다. -

mysql> select *from DemoTable2;

이것은 다음과 같은 출력을 생성합니다 -

+----------+------------+-----------+
| ClientId | ClientName | ClientAge |
+----------+------------+-----------+
| 1        | Tom        | 38        |
+----------+------------+-----------+
1 row in set (0.00 sec)