Hallo<p>
Ich habe eine Tabelle mit der Spalte NUMMER: INTEGER (Primärindex). Wenn vom User ein Datensatz gelöscht werden soll,<br>
wird die Spalte DELETED auf 1 gesetz. Im Delphiprogramm holt die Query-Komponente mit<br>
SQL.TEXT:='select * from tabelle where (DELETED IS NULL) or (DELETED<>1) order by nummer';<br>
die Daten auf den Bildschirm.<br>
Damit wird der "gelöschte" Datensatz für die Query unsichtbar.<br>
Es gibt einen insert before trigger in der Tabelle, der mit new.nummer=gen_id(nummergenerator,1)<br>
einen neuen Datensatz mit einer neuen Nummer erzeugt.<br>
Ich möchte allerdings, dass beim Einfügen eines Datensatz zuerst gesucht wird,<br>
ob ein Datensatz gelöscht wurde (DELETED=1) und dann dieser mit den Daten überschrieben wird.<br>
So enthält jede fortlaufende Nummer einen verwendeten Datensatz.<p>
Ich habe dazu diesen before insert trigger geschrieben:<br>
<br>
declare variable num integer;<br>
begin<br>
select min(num)<br>
from tabelle<br>
where deleted=1<br>
into :num;<br>
if num>=1 then<br>
new.nummer=num<br>
else<br>
new.nummer=gen_id(nummergenerator,1);<br>
<br>
Doch das funktioniert nicht, wie geplant.<br>
Wer kann mir weiterhelfen, gibt es einen anderen Weg ?<p>
Gruß Marcus
Ich habe eine Tabelle mit der Spalte NUMMER: INTEGER (Primärindex). Wenn vom User ein Datensatz gelöscht werden soll,<br>
wird die Spalte DELETED auf 1 gesetz. Im Delphiprogramm holt die Query-Komponente mit<br>
SQL.TEXT:='select * from tabelle where (DELETED IS NULL) or (DELETED<>1) order by nummer';<br>
die Daten auf den Bildschirm.<br>
Damit wird der "gelöschte" Datensatz für die Query unsichtbar.<br>
Es gibt einen insert before trigger in der Tabelle, der mit new.nummer=gen_id(nummergenerator,1)<br>
einen neuen Datensatz mit einer neuen Nummer erzeugt.<br>
Ich möchte allerdings, dass beim Einfügen eines Datensatz zuerst gesucht wird,<br>
ob ein Datensatz gelöscht wurde (DELETED=1) und dann dieser mit den Daten überschrieben wird.<br>
So enthält jede fortlaufende Nummer einen verwendeten Datensatz.<p>
Ich habe dazu diesen before insert trigger geschrieben:<br>
<br>
declare variable num integer;<br>
begin<br>
select min(num)<br>
from tabelle<br>
where deleted=1<br>
into :num;<br>
if num>=1 then<br>
new.nummer=num<br>
else<br>
new.nummer=gen_id(nummergenerator,1);<br>
<br>
Doch das funktioniert nicht, wie geplant.<br>
Wer kann mir weiterhelfen, gibt es einen anderen Weg ?<p>
Gruß Marcus
Comment