【发布时间】:2022-08-12 04:11:58
【问题描述】:
我有一个为该特定部分的学生创建Assesments 和createAssesmentMarks 的存储过程。
每当我插入单个记录时,它都会成功执行,但是当我尝试将多个记录插入一个时,因为“子查询返回多于一行”错误并将数据存储在 assesmentsTable 中,但不是 AssesmentMarksTable
所以我的问题是:
- 如何在一次执行中插入多条记录?
- 如果无法防止数据存储不一致,我该如何回滚?
DELIMITER $$ CREATE PROCEDURE createAssesment(IN name VARCHAR(100), maxMarks INT, classId INT, sectionId INT , subjectId INT) BEGIN INSERT INTO assesments (name , maxMarks , classId , sectionId , subjectId) VALUES (name , maxMarks, classId , sectionId , subjectId); INSERT INTO assesmentMarks (assesmentId , scoredMarks , studentId) VALUES (SELECT LAST_INSERT_ID() FROM assesments) , (scoredMarks) ,(SELECT stud.studentId FROM students stud WHERE stud.sectionId = sectionId); END $$ DELIMITER ;
-
提示:多插入+事务块。
-
嘿,谢谢你介意提供一些进一步的指示吗?
-
这些关键字将直接引导您找到所需的答案。
-
谢谢兄弟,提示帮助了我很多,我会发布答案