As I understand it, you don't really want the MAX(Student_ID), you want the actual Student_ID of the last insert. It is important to note that they are not necessarily the same. If you insert Student 24, then I insert Student 25, then you check MAX(Student_ID), you will get 25, not 24. Hence, you'll end up using the wrong value. Also, some table types will reuse IDs from deleted rows.

Fortunately, mysql provides a solution. The LAST_INSERT_ID() function returns the most recent AUTO_INCREMENT value. It is also connection-specific, so it is not affected by what someone else is doing. So, your second statement should be

  INSERT INTO Extra_Credit (Student_ID, Points)
  VALUES (LAST_INSERT_ID(), 25)

Michael

EP wrote:

Struggling to get an INSERT to work, can anyone help?

Here's my scenario:

Students    [table]
------------
Student_ID    [primary key, auto-increment]
Student_name
Student_sex

Extra_Credit    [table]
------------
EC_ID     [primary key, auto-increment]
Student_ID
Points

First: INSERT INTO Students (Student_name, Student_sex) VALUES('"Josh Baxter", "M");

[suceeds]

Then: INSERT INTO Extra_Credit (Student_ID, Points) SELECT MAX(Student_ID) from Students,

(1) ...VALUE ('25');

or

(2) ... '25' as Points;

Either one fails... Any hints on syntax to achieve the insert (pulling the Student_ID in from the just modified record in the Students table)?

TIA!


Eric Pederson








--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]



Reply via email to