In mehrere Tabellen in MySQL einfügen
Dieses Tutorial zeigt beispielhaft Transaktionen und gespeicherte Prozeduren zum Einfügen in mehrere Tabellen in MySQL.
In mehrere Tabellen in MySQL einfügen
Es gibt keine Möglichkeit, einen einzelnen MySQL-Befehl in mehrere Tabellen einzufügen, aber wir können MySQL-Transaktionen verwenden, um die Projektanforderungen zu erfüllen.
Lassen Sie uns zwei Tabellen namens users
und user_profiles
erstellen. Die Tabelle users
hat drei Attribute, user_id
, user_name
und user_password
, während die Tabelle profiles
die Attribute user_id
, user_bio
und homepage
enthält.
Sehen Sie sich die folgenden Befehle an, mit denen wir beide Tabellen erstellen.
Beispielcode:
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
);
Hier haben wir beide Tabellen erstellt. Jetzt können wir auf folgende Weise Daten gleichzeitig in beide Tabellen einfügen.
Denken Sie daran, dass der Wert von user_profiles.user_id
und users.user_id
derselbe ist.
Beispielcode:
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;
Fügen Sie zwei Datensätze hinzu und verwenden Sie die Anweisung SELECT
, um die Ergebnisse anzuzeigen.
Ausgabe (für die Tabelle users
):
+---------+-----------+---------------+
| user_id | user_name | user_password |
+---------+-----------+---------------+
| 1 | username1 | userpassword1 |
| 2 | username2 | userpassword2 |
+---------+-----------+---------------+
2 rows in set (0.03 sec)
Ausgabe (für die 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)
Alternativ können wir wie folgt eine gespeicherte Prozedur erstellen, um Zeit und Aufwand zu sparen.
Beispielcode:
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 ;