User Tools

Site Tools


sql:snippets:firstnotusedid

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
sql:snippets:firstnotusedid [09.12.2013 09:39:54]
127.0.0.1 external edit
sql:snippets:firstnotusedid [31.03.2016 09:20:46] (current)
yaslaw
Line 1: Line 1:
-======[MySQL] First not used Id======+======[SQL] First not used Id======
 Erste freie ID einer Tabelle ermitteln ​ Erste freie ID einer Tabelle ermitteln ​
 +
 +<WRAP center round important 60%>
 +ACHTUNG!
 +Eignet sich nicht um in einer Multiuser-Umgebung die IDs zu vergeben, da zwischen ID auslesen und neuen Beitrag posten jemand anderes die ID besetzen kann.
 +</​WRAP>​
 +
  
 ===== Ausgangslage ===== ===== Ausgangslage =====
Line 10: Line 16:
  MIN(newIds.newId) AS firstNotUsedId  MIN(newIds.newId) AS firstNotUsedId
 FROM FROM
- jeweils die nächst höhere ID ermitteln+ -- jeweils die nächst höhere ID ermitteln
  (SELECT id + 1 AS newId FROM test) AS newIds  (SELECT id + 1 AS newId FROM test) AS newIds
- und mit der Tabelle zurückverknüpfen+ -- und mit der Tabelle zurückverknüpfen
  LEFT JOIN (SELECT id FROM test ) AS ids  LEFT JOIN (SELECT id FROM test ) AS ids
  ON newIds.newId = ids.id  ON newIds.newId = ids.id
Line 25: Line 31:
 An diese hänge ich die Tabelle mittels eines LEFT JOIN An diese hänge ich die Tabelle mittels eines LEFT JOIN
 Daraus nehme ich alle newId die in der Tabelle nicht als ID bestehen. Daraus nehme ich alle newId die in der Tabelle nicht als ID bestehen.
-Zuguter letzt lese ich mit min() die klienste ​daraus aus.+Zuguter letzt lese ich mit min() die kleinste ​daraus aus. 
  
  
->​ACHTUNG! 
->Eignet sich nicht um in einer Multiuser-Umgebung die IDs zu vergeben, da zwieschen ID auslesen und neuen Beitrag posten jemand anderes die ID besetzen kann. 
 {{tag>​MySQL}} {{tag>​MySQL}}
 +
 +===== Spielwiese =====
 +[[http://​sqlfiddle.com/#​!2/​68751c/​1|Beispiel bei sqlfiddle.com]]
sql/snippets/firstnotusedid.1386578394.txt.gz · Last modified: 30.04.2014 09:24:36 (external edit)