mysql将数据插入多个表

时间:2011-11-23 06:03:41

标签: mysql reference insert

我的桌子是学生,班级和学生班级。他们之间有很多关系。任何人都可以告诉我为什么以下代码不起作用?

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).

2 个答案:

答案 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语句并捕获异常。如果发生异常,则执行回滚