Einzelnen Beitrag anzeigen

Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
680 Beiträge
 
FreePascal / Lazarus
 
#33

Re: Anweundung mit MySQL Online/Offline

  Alt 3. Apr 2007, 15:28
bei fb2 hat sich mit Autoinc einiges getan, insbesondere durch returning
hier mal kurz zitiert von
http://www.rrze.uni-erlangen.de/hilf...bird-faq.shtml

Gruß
Holger
www.ibexpert.com

see you in paderborn

-------------------------------------------
Autoincrement Felder in Firebird

In Datenbank-Tabellen ist regelmäßig ein eindeutiger Wert in einer Spalte (Primary Key) gewünscht. In einigen Datenbanken gibt es dazu ein Felddatentyp AutoInc oder ähnlich. Firebird und der SQL-Standard sehen zu Generatoren bzw Sequenzen vor.

Hier die nötigen Schritte in Firebird bis Version 1.5 (wird in neueren Versionen vmtl. auch funktionieren)

-- Generator mit Namen GEN_XYZ anlegen
CREATE GENERATOR GEN_XYZ;

-- Wert des Generators setzen
-- ACHTUNG: Nur zum Initialisieren!
SET GENERATOR GEN_XYZ TO 5;

-- Generator-Wert erhöhen um 1 und auslesen
select gen_id(GEN_XYZ,1) from RDB$DATABASE;

-- INSERT in Tabelle TBL_XYZ mit eindeutigem Generator-Wert in der Spalte "Id"
INSERT INTO TBL_XYZ ("Id") VALUES (gen_id(GEN_XYZ,1));

Der zweite Parameter der Funktion GEN_ID kann einen bel. Wert annehmen. Insbesondere kann man mit 0 einen Generator-Wert auslesen, ohne ihn zu verändern und mit -1 auch vermindern.

Ab Firebird 2.0 kann man das Problem noch eleganter lösen:

-- INSERT in Tabelle TBL_XYZ mit eindeutigem Generator-Wert in der Spalte "Id"
INSERT INTO TBL_XYZ ("Name") VALUES ('bla') RETURNING "Id";


Bei RETURNING können mehere Feldnamen der Tabelle angegeben werden, in die ein Datensatz eingefügt wurde. Die Felder müssen nicht über INSERT eingefügt werden, sondern können z.B. auch aus DEFAULT-Werten oder Ergebnissen von TRIGGERN stammen.
-------------------------------------------
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat