@Privateer3000:
Ich verwende zum Erstellen und Ändern von Firebird-Datenbank immer die Personalversion von
IBExpert. Bevor du das Tool herunterlädst, mußt du dich registrieren.
IBExpert bietet beim Erstellen einer Tabelle die Möglichkeit, ein AutoInc-Feld zu definieren, wie in der angehängten Grafik dargestellt. Dabei kann man sich gleich automatisch den entsprechenden Trigger, den Generator und eine Prozedur generieren lassen. Die sehen dann so aus:
Prozedur SP_GEN_PROJEKT_ID
Code:
begin
ID = gen_id(GEN_PROJEKT_ID, 1);
suspend;
end
/*
DLL */
SET TERM ^ ;
CREATE OR ALTER PROCEDURE SP_GEN_PROJEKT_ID
returns (
ID integer)
as
begin
ID = gen_id(GEN_PROJEKT_ID, 1);
suspend;
end^
SET TERM ; ^
/* Existing privileges on this procedure */
GRANT EXECUTE ON PROCEDURE SP_GEN_PROJEKT_ID TO SYSDBA;
Trigger PROJEKT_BI
Code:
as
begin
if (new.IDX_PROJEKT is null) then
new.IDX_PROJEKT = gen_id(GEN_PROJEKT_ID,1);
end
/*
DLL */
/******************************************************************************/
/* Following SET
SQL DIALECT is just for the Database Comparer */
/******************************************************************************/
SET
SQL DIALECT 3;
CREATE GENERATOR GEN_PROJEKT_ID;
SET TERM ^ ;
CREATE OR ALTER TRIGGER PROJEKT_BI FOR PROJEKT
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.IDX_PROJEKT is null) then
new.IDX_PROJEKT = gen_id(GEN_PROJEKT_ID,1);
end
^
SET TERM ; ^
Generator GEN_PROJEKT_ID
Code:
CREATE SEQUENCE GEN_PROJEKT_ID;
ALTER SEQUENCE GEN_PROJEKT_ID RESTART WITH 1;
/* Old syntax is:
CREATE GENERATOR GEN_PROJEKT_ID;
SET GENERATOR GEN_PROJEKT_ID TO 1;
*/