MySQL 事务插入数据:将 C 表数据批量导入 ask_questions 和 ask_answers 表

本文将介绍如何使用 MySQL 事务将 C 表的数据批量插入到 ask_questionsask_answers 表中。

假设 C 表的结构如下:

CREATE TABLE c (
  question_title VARCHAR(255),
  answer VARCHAR(255)
);

1. 使用事务保证数据一致性

为了确保数据插入的完整性和一致性,我们需要使用 MySQL 事务。

START TRANSACTION;

INSERT INTO ask_questions (user_id, category_id, title, description, price, hide, answers , status, created_at, updated_at)
SELECT 1, 7, question_title, question_title, 1, 1, 1, 1, NOW(), NOW() FROM c;

SET @question_id = LAST_INSERT_ID();

INSERT INTO ask_answers (question_title, question_id, user_id, content, status, adopted_at, created_at, updated_at)
SELECT question_title, @question_id, 1007, answer, 1, NULL, NOW(), NOW() FROM c;

COMMIT;

2. 代码解释

  • START TRANSACTION;:开启事务,确保后续操作的原子性。
  • INSERT INTO ask_questions ... SELECT ... FROM c;:使用 SELECT 语句从 C 表中选择 question_title 字段,并将其插入到 ask_questions 表中。同时设置其他字段的默认值。
  • SET @question_id = LAST_INSERT_ID();:获取 ask_questions 表中最后插入数据的 id,并将其存储到变量 @question_id 中。
  • INSERT INTO ask_answers ... SELECT ... FROM c;:使用 SELECT 语句从 C 表中选择 question_titleanswer 字段,并将其插入到 ask_answers 表中。同时设置其他字段的默认值,并使用 @question_id 关联到 ask_questions 表中的对应记录。
  • COMMIT;:提交事务,确保所有操作都被执行。

3. 注意

  • 该代码示例假设 ask_questions 表中 id 是自增主键。
  • 为了提高效率,可以根据实际情况调整 SQL 语句。
  • 建议在正式执行该语句之前进行测试,以确保数据正确性。

希望本文能帮助您理解如何使用 MySQL 事务将数据批量插入到多个表中。如果您还有其他问题,请随时提问。

MySQL 事务插入数据:将 C 表数据批量导入 ask_questions 和 ask_answers 表

原文地址: https://www.cveoy.top/t/topic/lO24 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录