我的桌子是学生,班级和学生班级。他们之间有很多关系。任何人都可以告诉我为什么以下代码不起作用?
START TRANSACTION;# MySQL returned an empty result set (i.e. zero rows).
# MySQL returned an empty result set (i.e. zero rows).
INSERT INTO 'students'('StudentID','Fname','Lname')
VALUES (Null,'name','lastname')
# 1 row affected.
SET @student = LAST_INSERT_ID();
# MySQL returned an empty result set (i.e. zero rows).
INSERT INTO `classes`(`classID`, `className`)
VALUES (Null, 'Maths');# 1 row affected.
SET @class = LAST_INSERT_ID();
# MySQL returned an empty result set (i.e. zero rows).
INSERT INTO `studentclasses`(`classID`, `studentID`)
VALUES (@class, @student);
# 1 row affected.
COMMIT;# MySQL returned an empty result set (i.e. zero rows).
答案 0 :(得分:3)
START TRANSACTION;
INSERT INTO students(StudentID,Fname,Lname) VALUES (Null,'name','lastname');
SET @student = LAST_INSERT_ID();
INSERT INTO classes(classID, className) VALUES (Null, 'Maths');
SET @class = LAST_INSERT_ID();
INSERT INTO studentclasses(classID, studentID) VALUES(@class, @student);
COMMIT;
它应该可以工作,在新数据库上尝试这个例子 -
CREATE TABLE classes(
classID INT(11) NOT NULL AUTO_INCREMENT,
className VARCHAR(20) DEFAULT NULL,
PRIMARY KEY (classID)
);
CREATE TABLE studentclasses(
classID INT(11) DEFAULT NULL,
studentID INT(11) DEFAULT NULL
);
CREATE TABLE students(
StudentID INT(11) NOT NULL AUTO_INCREMENT,
Fname VARCHAR(20) DEFAULT NULL,
Lname VARCHAR(20) DEFAULT NULL,
PRIMARY KEY (StudentID)
);
START TRANSACTION;
INSERT INTO students(StudentID,Fname,Lname) VALUES (Null,'name','lastname');
SET @student = LAST_INSERT_ID();
INSERT INTO classes(classID, className) VALUES (Null, 'Maths');
SET @class = LAST_INSERT_ID();
INSERT INTO studentclasses(classID, studentID) VALUES(@class, @student);
COMMIT;
SELECT * FROM students;
+-----------+-------+----------+
| StudentID | Fname | Lname |
+-----------+-------+----------+
| 1 | name | lastname |
+-----------+-------+----------+
SELECT * FROM classes;
+---------+-----------+
| classID | className |
+---------+-----------+
| 1 | Maths |
+---------+-----------+
SELECT * FROM studentclasses;
+---------+-----------+
| classID | studentID |
+---------+-----------+
| 1 | 1 |
+---------+-----------+
答案 1 :(得分:0)
在try块中使用Insert语句并捕获异常。如果发生异常,则执行回滚