Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi nach commit ist alles weg (https://www.delphipraxis.net/134452-nach-commit-ist-alles-weg.html)

mkinzler 24. Mai 2009 11:02

Re: nach commit ist alles weg
 
Eine IP muss ja eindeutig sein. Ein Insert funktioniert deshalb nur, wenn die angegebene ID nicht schon vorhanden ist.
http://www.firebirdsql.org/manual/de...de-basics.html
http://www.firebirdsql.org/pdfmanual...eneratoren.pdf

clock50 24. Mai 2009 13:05

Re: nach commit ist alles weg
 
also ich hab mal versucht einen TRIGGER eizusetzen (über ein script erstellt) aber ich bekomme einen Fehler: Expected end of statement, encountered EOF
was ist falsch?

SQL-Code:
SET NAMES ISO8859_1;
create database 'D:\Platte-E\Projekte\fire\Daten\daten.fdb'
user 'SYSDBA' password 'masterkey'
page_size 4096 
default character set iso8859_1;

CREATE DOMAIN "TSTR25" AS VARCHAR(25) COLLATE DE_DE;
CREATE DOMAIN "TSTR50" AS VARCHAR(30) COLLATE DE_DE;
CREATE DOMAIN "TMEMO" AS VARCHAR(2000) COLLATE DE_DE;

CREATE TABLE "KUNDEN"
(
  ID           INTEGER NOT NULL,
  anrede   TSTR25,
  vorname      TSTR50,
  name           TSTR50,
  land           TSTR50,
  plz           TSTR25,
  ort           TSTR50,
  strasse      TSTR50,
  tel           TSTR50,
  fax           TSTR50,
  mail           TSTR50,
  knr           TSTR25

);

SET TERM ^ ;

CREATE TRIGGER trgTKUNDEN_BI_V3 for TKUNDEN
active before insert position 0
as
begin
 if ((new.id is null) or (new.id = 0)) then
 begin
  new.id = gen_id( gidKUNDEN, 1 );
 end
end

mkinzler 24. Mai 2009 13:09

Re: nach commit ist alles weg
 
SQL-Code:
SET NAMES ISO8859_1;
create database 'D:\Platte-E\Projekte\fire\Daten\daten.fdb'
user 'SYSDBA' password 'masterkey'
page_size 4096
default character set iso8859_1;

CREATE DOMAIN "TSTR25" AS VARCHAR(25) COLLATE DE_DE;
CREATE DOMAIN "TSTR50" AS VARCHAR(30) COLLATE DE_DE;
CREATE DOMAIN "TMEMO" AS VARCHAR(2000) COLLATE DE_DE;

CREATE TABLE "KUNDEN"
(
  ID          INTEGER NOT NULL,
  anrede  TSTR25,
  vorname      TSTR50,
  name          TSTR50,
  land          TSTR50,
  plz          TSTR25,
  ort          TSTR50,
  strasse      TSTR50,
  tel          TSTR50,
  fax          TSTR50,
  mail          TSTR50,
  knr          TSTR25

);

SET TERM ^ ;

CREATE TRIGGER trgTKUNDEN_BI_V3 for TKUNDEN
active before insert position 0
as
begin
if ((new.id is null) or (new.id = 0)) then
begin
  new.id = gen_id( gidKUNDEN, 1 );
end
end ^

SET TERM ; ^

clock50 24. Mai 2009 20:27

Re: nach commit ist alles weg
 
Wie muß den jetzt mein IBDataSet.InsertSQL aussehen?
Ich habe jetzt schon Menge hin und her getestet aber mein ID Feld wird nicht automatisch eingefügt.

mkinzler 24. Mai 2009 20:45

Re: nach commit ist alles weg
 
ID einfach weglassen, sowohl in der Feldliste, wie auch bein den Values

clock50 26. Mai 2009 06:41

Re: nach commit ist alles weg
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich weiß nicht was ich falsch mache? Ich habe schon mit DBASE und MySQL gearbeitet sowohl mit Delphi als auch ohne, aber hier weiß ich nicht weiter. Ich weiß nicht wo der (oder die) Fehler liegen. Es kann nicht nur ein Fehler sein. Ich habe noch mal mein Test-Projekt angehängt. Ich hoffe es hat jemand Zeit sich das mal anzusehen.

clock50 27. Mai 2009 21:18

Re: nach commit ist alles weg
 
Ich hab's: es war die Groß- und Kleinschreibung.
Hat jemand ne Ahnung wie man die zuletzt eingefügte ID bekommt? den LAST_INSERT_ID() geht ja nicht.

mkinzler 27. Mai 2009 21:34

Re: nach commit ist alles weg
 
Zitat:

Hat jemand ne Ahnung wie man die zuletzt eingefügte ID bekommt? den LAST_INSERT_ID() geht ja nicht.
Lass sie dir mit
RETURNING zurückgeben

SQL-Code:
insert into ... values (...) returning <PK>;

TBx 27. Mai 2009 21:39

Re: nach commit ist alles weg
 
Zitat:

Zitat von mkinzler
Lass sie dir mit
RETURNING zurückgeben

SQL-Code:
insert into ... values (...) returning <PK>;

Das gibt es erst ab FB 2.1, der TE arbeitet aber afik mit FB1.5.

mkinzler 27. Mai 2009 21:42

Re: nach commit ist alles weg
 
Zitat:

Das gibt es erst ab FB 2.1, der TE arbeitet aber afik mit FB1.5.
Dann bleibt das Update auf FB2
oder statt Trigger die Sequenz clientseitig zu holen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:09 Uhr.
Seite 2 von 2     12   

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