Joshua J. Kugler writes:
> I've been arguing with MS Access lately. Fortunately, I won. But only
> because I had the source to MySQL available. Here's the situation:
>
> (If you're looking for the feature request, skip to the end of the e-mail.
> This message is a summary of a series of message posted on the MyODBC list.
> I'm posting here in hopes the MySQL developers, or at least one, will read
> it.)
>
> I am using attached tables. If you are using attached tables in Access, it
> will not allow you to use the statement "SELECT LAST_INSERT_ID()" *EVEN* if
> you tell it to make it a passthrough query. It tries to parse it and bombs
> saying it is an unknown function. Poppycock! OK, we can always try "SELECT
> id FROM table_name WHERE ID IS NULL"
>
> So, I did. If I do a manual insert, i.e. db.execute("insert query"), and
> then open a recordset selecting the NULL id, I can get the new ID. GREAT!
> Or so I thought. Access has a glitch, though...well, many actually. :)
>
> Then I went about inserting a record via recordset.addnew, adding data, then
> recordset.update. Then when I tried to select the NULL id, it gave me an
> empty recordset. HUH!? So, I went and turned on logging**, and found out
> after an insert via recordset commands, Access issues a query to get the new
> record using the IS NULL construct. *AND THEN* MySQL resets the last insert
> id when that query is issued. Not exactly sure why, as you can do a "SELECT
> LAST_INSERT_ID()" as many times as you want. So, since Access already used
> IS NULL, I can't. So there has to be a way to disable that, right? Right.
> I grep'ed the source, and found this at line 3062 of sql/sql_select.cc:
>
> thd->insert_id(0); // Clear for next request
>
> Well, I commented that out, recompiled, and now
>
> SELECT id FROM table_name WHERE id IS NULL
>
> mirrors the behavior of
>
> SELECT LAST_INSERT_ID()
>
> So, I can "SELECT id FROM table_name WHERE id IS NULL" as many times as I
> need/want to, and it will return the proper value. Very nice.
>
> So, that was my problem, and the solution. Could these be changed in the
> official distribution? Or at least a compile time option? I see no reason
> why the SELECT NULL behavior cannot mirror the behavior of LAST_INSERT_ID.
>
> Thanks very much for a great product! And thanks for making the source
> available! That saved me a VERY large headache!
>
> j----- k-----
>
> **MySQL logs are a LIFESAVER! Especially when all Access will tell you is
> "ODBC Call Failed" !! :)
>
> --
> Joshua Kugler
> Associated Students of the University of Alaska Fairbanks
> Information Services Director
> [EMAIL PROTECTED]
> 907-474-7601
>
Hi!
We shall definitely consider your idea. There might be other
implication of the above change, but the idea is very interesting.
Regards,
Sinisa
____ __ _____ _____ ___ == MySQL AB
/*/\*\/\*\ /*/ \*\ /*/ \*\ |*| Sinisa Milivojevic
/*/ /*/ /*/ \*\_ |*| |*||*| mailto:[EMAIL PROTECTED]
/*/ /*/ /*/\*\/*/ \*\|*| |*||*| Larnaca, Cyprus
/*/ /*/ /*/\*\_/*/ \*\_/*/ |*|____
^^^^^^^^^^^^/*/^^^^^^^^^^^\*\^^^^^^^^^^^
/*/ \*\ Developers Team
>
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php