Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#12

IBExpert

  Alt 27. Okt 2012, 20:16
@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;
*/
Miniaturansicht angehängter Grafiken
autoinc.jpg  
  Mit Zitat antworten Zitat