MySQL의 여러 테이블에 삽입
Mehvish Ashiq
2024년2월16일
이 자습서에서는 MySQL의 여러 테이블에 삽입할 트랜잭션 및 저장 프로시저를 예시합니다.
MySQL의 여러 테이블에 삽입
단일 MySQL 명령을 여러 테이블에 삽입할 수 있는 방법은 없지만 MySQL 트랜잭션을 사용하여 프로젝트 요구 사항을 충족할 수 있습니다.
users
및 user_profiles
라는 두 개의 테이블을 생성해 보겠습니다. users
테이블에는 user_id
, user_name
및 user_password
의 세 가지 속성이 있고 profiles
테이블에는 user_id
, user_bio
및 homepage
가 속성으로 포함됩니다.
두 테이블을 만드는 데 사용하는 다음 명령을 참조하십시오.
예제 코드:
CREATE TABLE users(
user_id INT NOT NULL AUTO_INCREMENT,
user_name VARCHAR(45) NOT NULL,
user_password VARCHAR(45) NOT NULL,
PRIMARY KEY(user_id)
);
CREATE TABLE user_profiles(
user_id VARCHAR(45) NOT NULL,
user_bio VARCHAR(45) NOT NULL,
homepage VARCHAR(50) NOT NULL
);
여기에서는 두 테이블을 모두 만들었습니다. 이제 다음과 같은 방법으로 두 테이블에 동시에 데이터를 삽입할 수 있습니다.
user_profiles.user_id
와 users.user_id
의 값은 동일합니다.
예제 코드:
BEGIN;
INSERT INTO users (user_id,user_name, user_password)
VALUES (2,'username2', 'userpassword2');
SELECT @UserID := MAX(user_id) FROM users;
INSERT INTO user_profiles (user_id, user_bio, homepage)
VALUES(@UserID,'this is bio for username2', 'http://www.username2.com');
COMMIT;
두 개의 레코드를 추가하고 SELECT
문을 사용하여 결과를 확인합니다.
출력(users
테이블의 경우):
+---------+-----------+---------------+
| user_id | user_name | user_password |
+---------+-----------+---------------+
| 1 | username1 | userpassword1 |
| 2 | username2 | userpassword2 |
+---------+-----------+---------------+
2 rows in set (0.03 sec)
출력(user_profiles
용):
+---------+---------------------------+--------------------------+
| user_id | user_bio | homepage |
+---------+---------------------------+--------------------------+
| 1 | this is bio for username1 | http://www.username1.com |
| 2 | this is bio for username2 | http://www.username2.com |
+---------+---------------------------+--------------------------+
2 rows in set (0.00 sec)
또는 시간과 노력을 절약하기 위해 다음과 같이 저장 프로시저를 만들 수 있습니다.
예제 코드:
DELIMITER ;;
CREATE PROCEDURE InsertALL()
BEGIN
INSERT INTO users (user_id,user_name, user_password)
VALUES (3,'username3', 'userpassword3');
SELECT @UserID := MAX(user_id) FROM users;
INSERT INTO user_profiles (user_id, user_bio, homepage)
VALUES(@UserID,'this is bio for username3', 'http://www.username3.com');
END ;;
DELIMITER ;
작가: Mehvish Ashiq