Hello,
Zur Vereinfachung habe ich eine Tabelle
zahl
benutzt mit den Spaltenid
undnummer
, in die ich eine neue Nummer eintragen will, wenn sie noch nicht vorhanden ist. Selbstverständlich hier NICHT mit einem Unique Index, da der ja für den anderen Anwendungsfall nicht nutzbar wäre.Schritt 1 wäre geschafft:
insert into zahl (zahl) select distinct 25 from zahl where 25 not in (select zahl from zahl);
Das funktioniert mit MySQL. Kann bestimmt noch vereinfacht werden, bevor man es jetzt umbaut auf den anderen Anwendungsfall...
Die Terminverwaltung funktioniert so auch:
CREATE TABLE termin
(
id
int(10) unsigned NOT NULL AUTO_INCREMENT,
start
datetime NOT NULL,
ende
datetime NOT NULL,
PRIMARY KEY (id
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci COMMENT='Terminkalender Test';
insert into termin (id, start, ende)
select distinct null, '2010-11-01 09:00', '2011-11-02 14:00'
from termin
where (select count(*)
from termin
where ende
>= '2010-11-01 09:00' and start <= '2010-11-02 14:00') = 0;
Die affected Rows geben dann Auskunft darüber, ob der Termin noch eingetragen werden konnte.
In der API müsste dann zuvor nur noch die Rahmenbedingung geprüft werden, dass ENDE > ANFANG sein muss.
Aber ohne das Distinct funktioniert meine Variante nicht...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg