Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Anweundung mit MySQL Online/Offline (https://www.delphipraxis.net/89307-anweundung-mit-mysql-online-offline.html)

Mavarik 30. Mär 2007 09:00

Re: Anweundung mit MySQL Online/Offline
 
Zitat:

Zitat von mkinzler
Die Möglichkeit mit dem Trigger ist nur ein Weg, man kann das auch per SP oder mit einer Sequenz-Komponente machen.
Oder du läßst dir die ID beim Insert zurückgeben:
SQL-Code:
insert into <Tabelle> <Spalten ohne PK> values ( <´Werte>) returning <PK>;

SP = StoredProcedure?

<PK> = ID? Dann mit dem Trigger?

Muß ich die SQL Befehle für den Trigger Immer vorher machen oder "merk" sich das die Datenbank, wenn ich den einmal erzeugt habe?

Frank :coder:

mkinzler 30. Mär 2007 09:52

Re: Anweundung mit MySQL Online/Offline
 
Zitat:

SP = StoredProcedure?
Ja

Zitat:

<PK> = ID? Dann mit dem Trigger?
Der Trigger wird ja automatisch aufgerufen.

Zitat:

Muß ich die SQL Befehle für den Trigger Immer vorher machen oder "merk" sich das die Datenbank, wenn ich den einmal erzeugt habe?
ditto, der Trigger wird automatisch aufgerufen.

IBExpert 3. Apr 2007 14:28

Re: Anweundung mit MySQL Online/Offline
 
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.
-------------------------------------------

mkinzler 3. Apr 2007 14:30

Re: Anweundung mit MySQL Online/Offline
 
http://www.delphipraxis.net/internal...=701826#701826

Mavarik 4. Apr 2007 09:01

Re: Anweundung mit MySQL Online/Offline
 
Danke an alle!

Tutorial

Frank :dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:13 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz