Einzelnen Beitrag anzeigen

Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

Re: Firebird / UniDac - Insert über Query?

  Alt 21. Feb 2010, 08:43
Den nächsten Wert eines Triggers kannst Du mit dem folgenden SQL-Befehl Abfragen SELECT NEXT VALUE FOR <generator_name> FROM RDB$DATABASE; Im Feld Gen_ID findest Du dann den nächsten Wert vom Trigger.

Edit2 : Aber aufpassen, wenn der SELECT-Befehl ausgeführt wird, dann wird der Trigger angestossen und um eins erhöht. Ich habe dann nochmal den Befehl ALTER SEQUENCE <generator_name> RESTART WITH <ergebnis aus select - 1>; ausgeführt, damit der Trigger wieder auf dem alten Wert steht.

Eine Tabelle incl. AutoInc_Feld erstelle ich so :
SQL-Code:
CREATE TABLE Adresse (
   AutoInd INTEGER,
   Feld1 INTEGER,
   Feld2 INTEGER,
   Feld3 CHAR(50),
   Feld4 CHAR(50)
);

CREATE GENERATOR GEN_Adresse_ID;
SET TERM ^ ;

create trigger Adresse_bi for Adresse
active before insert position 0
as
begin
if (new.AutoInd is null) then
new.AutoInd = gen_id(gen_Adresse_id,1);
end
^

SET TERM ; ^

SET TERM ^ ;

create procedure sp_gen_Adresse_id
returns (AutoInd integer)
as
begin
AutoInd = gen_id(gen_Adresse_id, 1);
suspend;
end
^

SET TERM ; ^
Edit1: Fehler in den BBCodes bereinigt.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat