Autor | Zpráva | ||
---|---|---|---|
davef6 Profil |
#1 · Zasláno: 29. 1. 2009, 15:12:00
Jak mohu zjistit poslední vložený záznam do db (ID)? Myslim jiný způsob než mysql_insert_id(); , protože ten nemohu použít
|
||
Joker Profil |
#2 · Zasláno: 29. 1. 2009, 15:13:33
Pokud ID je auto_increment, tak poslední vložený je ten s nejvyšším ID:
SELECT * FROM tabulka ORDER BY id DESC LIMIT 1 |
||
davef6 Profil |
#3 · Zasláno: 29. 1. 2009, 15:46:54
potřeboval bych ukládat obrázky a aby obrázek se jmenoval stejně jako id, ale co když třeba poslední záznam smažu, pak se bude obrázek jmenovat třeba 15, jelikož poslední záznam bude 14, ale jelikož je již 15 jednou smazaná, v db se vygeneruje id s číslem 16...........takže obrázek bude 15 a id 16, což nechci, dá se to nějak řešit?
|
||
blaaablaaa Profil |
#4 · Zasláno: 29. 1. 2009, 15:53:32 · Upravil/a: blaaablaaa
SELECT `AUTO_INCREMENT` FROM `information_schema`.`TABLES` WHERE `TABLE_NAME` = 'nazev_tabulky' AND `TABLE_SCHEMA` = 'nazev_databaze' |
||
davef6 Profil |
#5 · Zasláno: 29. 1. 2009, 16:21:18
funguje, díky
|
||
TomášK Profil |
#6 · Zasláno: 29. 1. 2009, 16:25:49
Je na to i funkce v SQL:
SELECT LAST_INSERT_ID() viz dokumentace: http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html |
||
AM_ Profil |
#7 · Zasláno: 29. 1. 2009, 16:44:09
Zamkni si na to ale příslušnou tabulku (LOCK TABLES tabulka WRITE) a na konci UNLOCK TABLES, kdyby ten skript spustili dva uživatelé zároveň, nadělá to paseku:
uživatel 1: skript ukládá řádek databáze předání řízení uživateli 2 uživatel 2: skript ukládá řádek databáze předání řízení uživateli 1 uživatel 1: načte poslední vložené ID, které ale vložil uživatel 2 předání řízení uživateli 2 uživatel 2: načte znovu stejné ID |
||
Časová prodleva: 30 dní
|
|||
Mastodont Profil |
#8 · Zasláno: 28. 2. 2009, 12:51:58
AM_
Jak praví manuál: For LAST_INSERT_ID(), the most recently generated ID is maintained in the server on a per-connection basis. It is not changed by another client. |
||
Časová prodleva: 15 let
|
0