phpbar.de logo

Mailinglisten-Archive

Lücken in der Zählung

Lücken in der Zählung

Andreas Kretschmer andreas.kretschmer at schollglas.com
Fre Mai 12 18:29:19 CEST 2006


am  12.05.2006, um 16:55:58 +0200 mailte Benedikt Quirmbach folgendes:
> Hallo,
> 
> ich habe eine Tabelle mit einem Feld "nummer" (int). Es handelt sich  da um 
> ein Schlüsselfeld. Die Nummern müssen also eindeutig sein.
> 
> Bei der Vergabe der Nummern sind im Laufe der Zeit Lücken entstanden.  Um 

Das tut Deiner Bedingung der Eindeutigkeit keinen Abbruch. Unter
Systemen wie ORA oder PostgreSQL verwendet man Sequencen, und da kann
das auch passieren. Deine 'nummer' ist eine DB-interne Sache und kein
Objekt der realen Wirklichkeit. Und selbst wenn es sich z.B. um
Rechnungsnummern handelt, dann würde die eindeutige Sortierordnung durch
Deinen gleich folgenden Wunsch den Bach runter gehen...


> bei neuen Datensätzen nicht ins unendliche zu zählen, brauche ich  eine 

Wann ist denn bei INT Schluß, und gibt es Datentypen, die größer sind?


> Abfrage, die mir die erste Lücke in der Nummerierung zeigt, also  die 
> kleinste nicht benutzte Zahl (aber > 0) im Feld "nummer".
> 
> Wie bekomme ich das heraus?

test=# select * from t1;
 i
---
 1
 2
 3
 5
 6
(5 rows)

test=# select min(y) from generate_series(1,10) as y where y not in (select i from t1);
 min
-----
   4
(1 row)


Ich weiß, MySQL hat kein generate_series(), aber das kann man sich
basteln. Ansonsten, wie gesagt, du betätigst Dich als
Schönheitsoperateur. Bei hinreichend großen Tabellen dürften Inserts an
Geschwindigkeit leiden...



-- 
Andreas Kretschmer    (Kontakt: siehe Header)
Heynitz:  035242/47215,      D1: 0160/7141639
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
 ===    Schollglas Unternehmensgruppe    === 

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive