Mailinglisten-Archive |
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