我是MySQL的初学者。我创建了一个存储过程来从表中插入1,000个随机名称。它有3个字段num
,course_name
和grade
。 num
是外键 - 因为这是出于测试目的,我只是继续增加num
。所以我没有将其标记为PRIMARY KEY
/ AUTO_INCREMENT
。我打电话给程序,它在表格中插入了1000个随机名称。在不知不觉中,我再次打电话给程序,并在一段时间后停止了。然后,在之前的1000个条目之后,该表再获得500个条目。我想删除第二个过程调用后创建的行。
以下是我在存储过程中的陈述:(course_name
和grade_details
是包含课程名称和成绩的附加表。)
DELIMITER //
CREATE PROCEDURE course_grade(IN name_entries int)
BEGIN
DECLARE i int DEFAULT 0;
DECLARE course varchar(20);
DECLARE crs_grade char(1);
gradeloop : LOOP
SELECT name INTO course FROM course_name ORDER BY rand() LIMIT 1;
SELECT grade INTO crs_grade FROM grade_details ORDER BY rand() LIMIT 1;
INSERT INTO tbl_grade(fk_int_roll_no,vchr_course,vchr_grade)
VALUES (i+1,course,crs_grade);
SET i = i + 1;
IF (i=name_entries)
THEN LEAVE gradeloop;
END IF;
END LOOP gradeloop;
SELECT COUNT(*) FROM tbl_grade;
END //
DELIMITER ;
我的桌子就像:
+----------------+-------------+------------+
| fk_int_roll_no | vchr_course | vchr_grade |
+----------------+-------------+------------+
| 1 | AE | A |
| 2 | MECH | B |
| 3 | EC | A |
| . | .... | . |
| . | .... | . |
| 1000 | IT | E |
| 1 | MARINE | F |
| 2 | BIOTECH | F |
| . | .... | . |
| . | .... | . |
| . | .... | . |
| . | .... | . |
| 500 | RM | A |
+----------------+-------------+------------+
想要删除错误造成的最后1到500行!