MySQL主表從表同時插入數據,是在MySQL數據庫中操作時經常使用的一種方式,可以方便快捷地更新數據。下面來介紹一下具體操作。
首先,在MySQL中創建兩個表,一個主表和一個從表。主表和從表之間需要建立外鍵約束。比如這里的主表是User,從表是Order,它們的結構如下:
CREATE TABLE `User` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `Order` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `product` varchar(255) NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `fk_order_user` FOREIGN KEY (`user_id`) REFERENCES `User` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
接下來,我們可以使用MySQL的INSERT語句同時插入主表和從表的數據。例如,插入一個User和其對應的Order:
INSERT INTO `User` (`name`, `email`) VALUES ('Tom', 'tom@example.com'); SET @user_id = LAST_INSERT_ID(); INSERT INTO `Order` (`user_id`, `product`) VALUES (@user_id, 'Apple Watch');
上述SQL語句先插入User表的數據,然后獲取其自增主鍵id,保存到用戶變量中。然后通過該變量,在Order表中插入對應的數據。
另外,如果需要批量插入數據,也可以使用INSERT INTO ... VALUES語法,多個值之間用逗號隔開即可,例如:
INSERT INTO `User` (`name`, `email`) VALUES ('Jack', 'jack@example.com'), ('Lucy', 'lucy@example.com'); SET @user_id1 = LAST_INSERT_ID(); INSERT INTO `Order` (`user_id`, `product`) VALUES (@user_id1, 'iPhone'), (@user_id1, 'MacBook'); SET @user_id2 = LAST_INSERT_ID(); INSERT INTO `Order` (`user_id`, `product`) VALUES (@user_id2, 'iPad');
上述SQL語句中,先插入兩個用戶數據,然后獲取第一個用戶的id保存到變量中,再插入其對應的兩個Order數據。之后又獲取了第二個用戶的id,插入其對應的一個Order數據。
總之,MySQL主表從表同時插入數據,可以使用INSERT INTO語句,先插入主表數據并獲取主鍵,然后使用該主鍵在從表中插入對應數據。如果需要批量插入,可以使用INSERT INTO ... VALUES語法。