![]() |
Re: Firebird : Tabelle erstellen mit AutoInc-Feld
IMHO sind alle Lösungen, welche auf Generatoren aufsetzen gleich gut. Seien es jetzt durch Einsatz eines Triggers, einer SP, direkt im Statement oder dem Einsatz von clientseitiger Komponenten, welche darauf aufsetzen (TZSequence usw.)
|
Re: Firebird : Tabelle erstellen mit AutoInc-Feld
Zitat:
Zitat:
Pseudo code:
Delphi-Quellcode:
using transaction := deineConnection.BeginTransaction() do
begin using command := connection.CreateCommand() do begin command.CommandText := 'INSERT INTO Rechungen(blabla) VALUES(:Blabla) RETURINNG ID'; command.Parameters.Add('Blabla', 1); var rechungsId := command.ExecuteScalar() as Integer; command.CommandText := 'INSERT INTO RechungsPostenen(Rechung) VALUES(:Rechung) RETURNING ID'; command.Parameters.Add('Rechung', rechungsId); var rechungsPostenId := command.ExecuteScalar() as Integer; ... end; transaction.Commit(); end; Zitat:
Zitat:
Zitat:
Zitat:
Dann können nicht beide Lösungen gleich gut sein. ;) |
Re: Firebird : Tabelle erstellen mit AutoInc-Feld
Zitat:
Er hat das klassische Bsp. der Rechnung erklärt. Genau so nuss es gemacht werden. Also wird Rückgabewert gebraucht. Der Trigger scheidet somit aus und die beiden Möglichkeiten bestehen dann darin eine SP zu verwenden oder eben FB 2.0. Beides ist für den Zweck gut und macht keine Probleme. |
Re: Firebird : Tabelle erstellen mit AutoInc-Feld
Sorry Alex, "schöne Pfingsten" vergessen.
Und nun die quartalsmäßige Antwort an Hansa: Zitat:
Deine "Kompetenz" beginnt und endet bei Firebird, und selbst da hast du absolut keinen Plan. Kleiner Tipp an alle anderen, wenn es euch so wie mir gerade geht[1], versucht das was ich normalerweise auch mache: Versucht ihn zu ignoriert... [1] Hansa hat auf einen Beitrag von euch geantwortet |
Re: Firebird : Tabelle erstellen mit AutoInc-Feld
Zitat:
Aber ich werte ich das einfach als Zustimmung zu meiner Darstellung. Überredet? ;) alex |
Re: Firebird : Tabelle erstellen mit AutoInc-Feld
Zitat:
IOW, dein Einwand für das manuelle Generatorgefriemel und die Lücke im Trigger, die es ermöglicht eine ID in die Tabelle einzufügen, die als DeinGenerator.NextValue ist. Ich wollte zeigen dass es mit "Returning" auch in dem von dir geschilderten Fall einfacher ist. Wenn zusätzlich die Lücke aus dem Trigger entfernt werden kann ist's ja nur besser. :) Schließlich kannst du ja nur dann einen FK von Rechnungsposten auf Rechungen haben wenn der Rechungsdatensatz existiert, bevor du den Rechungsposten einfügst. Zitat:
|
Re: Firebird : Tabelle erstellen mit AutoInc-Feld
Zitat:
Zitat:
Diese Lücke ist aber nur theoretisch, da praktisch das Programm die ID vor dem Insert aus dem Generator holt. Allerdings bekommst du mit deinem "lückenslosen"-Trigger u.U. Probleme: z.B beim Import bestehender verlinkter Daten, der Trigger muß dann ggf. deaktiviert werden. von Zitat:
alex |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 Uhr. |
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