If there is a possibilty of that then
BEGIN
INSERT ... whatever
SELECT idno ORDER BY (idno) DESC LIMIT 1;
END;
It works, I just tried it in postgresql, the last idno is
visible to the user making the transaction, and will be
unavailable to others.
        From [EMAIL PROTECTED] Wed Sep 18 
22:34:13 2002
        Envelope-to: bob@localhost
        Mailing-List: contact [EMAIL PROTECTED]; run by ezmlm
        Precedence: bulk
        list-help: <mailto:[EMAIL PROTECTED]>
        list-unsubscribe: <mailto:[EMAIL PROTECTED]>
        list-post: <mailto:[EMAIL PROTECTED]>
        Delivered-To: mailing list [EMAIL PROTECTED]
        From: Jon Haworth <[EMAIL PROTECTED]>
        To: 'bob parker' <[EMAIL PROTECTED]>, [EMAIL PROTECTED]
        Date: Wed, 18 Sep 2002 13:27:56 +0100
        MIME-Version: 1.0
        X-Mailer: Internet Mail Service (5.5.2653.19)
        Content-Type: text/plain;
                charset="ISO-8859-1"
        Subject: RE: [PHP] Auto-increment value
        X-UIDL: *ab"!\-5!!-$7!!nk~!!

        Hi Bob,

        > SELECT idno ORDER BY idno DESC LIMIT 1;
        > assuming idno is what gets auto incremented

        That's not the best idea - what happens if two users are inserting records
        into the table at nearly-but-not-quite the same time?

        1. Insert A goes through
        2. Insert B goes through
        3. LastID A returns the ID of B
        4. LastID B returns the ID of B

        Whoever did insert A would receive the wrong ID.

        Cheers
        Jon

        -- 
        PHP General Mailing List (http://www.php.net/)
        To unsubscribe, visit: http://www.php.net/unsub.php



bob

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to