2016-07-21 13 views

Antwort

-1

Unter der Annahme, dass Ihre IDs in aufsteigender Reihenfolge auto-inkrementiert werden Sie für die höchste ID abfragen könnten ...

SELECT id from table ORDER BY id DESC LIMIT 1 

, dass Sie die höchste ID geben sollte und wenn Ihre IDs automatisch erhöht werden sollte dies der letzte Eintrag sein ...

+0

Dies unterliegt den Rennbedingungen und ist notorisch unzuverlässig. –

+0

Ich wusste nicht über Race-Bedingungen oder Unzuverlässigkeit bei dieser Abfrage ... Wenn das in der Tat wahr ist, könnte man SELECT MAX (ID) aus Tabelle verwenden ... – Tim

+0

Was ist, wenn Sie mehrere Datenbank-Client-Programme Zeilen in die Tabelle einfügen ? Das ist das Rennen. 'MAX()' hat das gleiche Problem. –

0

Viele Oracle-Programme Verwenden Sie database objects called SEQUENCEs, um eindeutige IDs zu generieren. Wenn Sie wissen, welche Sequenz für die ID in der Tabelle verwendet wird, die Sie gerade INSERT ed in, sagen einfach

SELECT sequencename.CURRVAL FROM DUAL; 

unmittelbar nach dem Einsatz in der gleichen Datenbank-Verbindung, und Sie werden die ID-Nummer.

SELECT MAX(id) und ähnliche Konstrukte funktionieren gut, solange Sie nur eine Verbindung zur Datenbank haben: das heißt, sie funktionieren nicht. Grundsätzlich sind sie nicht threadsicher. Sie sind auch teurer als CURRVAL.

Verwandte Themen