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