MySQL 事务插入数据:将数据从 C 表插入到 ask_questions 和 ask_answers 表
使用 INSERT INTO...SELECT 语句将 C 表的数据插入到上述的两张表中:
START TRANSACTION;
INSERT INTO ask_questions (user_id, category_id, title, description, price, hide, answers , status, created_at, updated_at)
SELECT user_id, category_id, question_title, question_desc, price, hide, answers , status, created_at, updated_at 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, user_id, answer_content, status, adopted_at, created_at, updated_at FROM C;
COMMIT;
解释:
START TRANSACTION;:开始一个事务,确保所有操作都成功完成或全部回滚。INSERT INTO ask_questions ... SELECT ... FROM C;:将 C 表中的数据插入到 ask_questions 表中。请确保 C 表的字段与 ask_questions 表的字段对应。SET @question_id = LAST_INSERT_ID();:获取上一次插入操作生成的 ID,用于在 ask_answers 表中关联问题 ID。INSERT INTO ask_answers ... SELECT ... FROM C;:将 C 表中的数据插入到 ask_answers 表中,同时将@question_id关联到每个答案。COMMIT;:提交事务,保存所有更改。
注意:
- 确保 C 表中包含
question_title和answer_content字段,以便对应 ask_questions 表的title和 ask_answers 表的content。 - 确保 C 表的字段类型与目标表字段类型匹配。
- 此代码假设 C 表中每个问题只对应一个答案。如果一个问题对应多个答案,则需要修改代码以进行相应的循环处理。
此代码示例仅供参考,具体实现需要根据实际情况进行调整。
原文地址: https://www.cveoy.top/t/topic/lO2Z 著作权归作者所有。请勿转载和采集!