LAST_INSERT_ID() and Stored Procs

2004-04-22 Thread Matt Chatterley
Hi all.

Another hiccup along the happy road with MySQL 5.0!

The last bit of a stored procedure I have just put together does this:

-- insert cluster row
INSERT INTO clusters (Name) VALUES (sName);
SELECT LAST_INSERT_ID() INTO iNewClusterID;

-- insert map row
INSERT INTO map (X, Y) VALUES (iX,iY);
SELECT LAST_INSERT_ID() INTO iNewMapID;

-- insert map_clusters row
INSERT INTO map_clusters (MapID, ClusterID) VALUES (iNewMapID,
iNewClusterID);

The last table mentioned, map_clusters has an FK on either column - each
pointing to one of the other two tables. The procedure always fails on this
insert, citing that there has been an FK violation.

I've returned the values of iNewClusterID and iNewMapID out as parameters,
and they always seem to be 0.

However, I tried this:

Create procedure id_test (out id int)
Begin
Select last_insert_id() into id;
End

And this correctly returns the last insert_id for the current connection.

Most puzzling - I saw a closed bug from March on mysql.com which would have
explained this, however, then, the above short procedure would have failed
as well!

Has anyone out there run into similar troubles?


Cheers,

Matt



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



RE: LAST_INSERT_ID() and Stored Procs

2004-04-22 Thread Matt Chatterley
Oh.

If only I'd tried ONE more thing before mailing that out!

If anyone does have the same problem, the vital (missing) piece of
information is that I was using MySQLCC. It seems to have problems with SPs
unless you open a new query window after changing the contents of a
procedure..


Thanks,

Matt

 -Original Message-
 From: Matt Chatterley [mailto:[EMAIL PROTECTED]
 Sent: 23 April 2004 02:08
 To: 'MySQL List'
 Subject: LAST_INSERT_ID() and Stored Procs
 
 Hi all.
 
 Another hiccup along the happy road with MySQL 5.0!
 
 The last bit of a stored procedure I have just put together does this:
 
 -- insert cluster row
 INSERT INTO clusters (Name) VALUES (sName);
 SELECT LAST_INSERT_ID() INTO iNewClusterID;
 
 -- insert map row
 INSERT INTO map (X, Y) VALUES (iX,iY);
 SELECT LAST_INSERT_ID() INTO iNewMapID;
 
 -- insert map_clusters row
 INSERT INTO map_clusters (MapID, ClusterID) VALUES (iNewMapID,
 iNewClusterID);
 
 The last table mentioned, map_clusters has an FK on either column - each
 pointing to one of the other two tables. The procedure always fails on
 this
 insert, citing that there has been an FK violation.
 
 I've returned the values of iNewClusterID and iNewMapID out as parameters,
 and they always seem to be 0.
 
 However, I tried this:
 
 Create procedure id_test (out id int)
 Begin
 Select last_insert_id() into id;
 End
 
 And this correctly returns the last insert_id for the current connection.
 
 Most puzzling - I saw a closed bug from March on mysql.com which would
 have
 explained this, however, then, the above short procedure would have failed
 as well!
 
 Has anyone out there run into similar troubles?
 
 
 Cheers,
 
 Matt
 
 
 
 --
 MySQL General Mailing List
 For list archives: http://lists.mysql.com/mysql
 To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]




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