AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

MySQL, Unidac und AutoInc

Ein Thema von JRichmann · begonnen am 19. Jun 2015 · letzter Beitrag vom 21. Jun 2015
Antwort Antwort
Perlsau
(Gast)

n/a Beiträge
 
#1

AW: MySQL, Unidac und AutoInc

  Alt 20. Jun 2015, 16:51
Wozu mußt du die neue Id des Masterdatensatzes kennen, bevor du ihn gespeichert hast? Mach es doch so, daß die Detail-Datensätze erst angelegt werden, nachdem der Masterdatensatz erzeugt wurde. Je nach Datenbanksystem gibt es auch die Möglichkeit, den Trigger für das Erzeugen der Id bereits vor dem Insert auszulösen, so daß du schon vor dem Posten die neue Id weißt bzw. abrufen kannst. In IbExpert bzw. Firebird, meinem bevorzugten DBMS, sieht das so aus:
Angehängte Grafiken
Dateityp: jpg BeforeInsert.jpg (115,3 KB, 16x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: MySQL, Unidac und AutoInc

  Alt 21. Jun 2015, 00:35
Ein ClientDataSet verwendet in diesem Fall eine PseudoID (negative Werte)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: MySQL, Unidac und AutoInc

  Alt 21. Jun 2015, 08:55
Also zuerst die Warnung, dann die Anwort:
Mit dem folgenden Vorschlag kannst Du in Teufelsküche kommen, wenn es nicht wasserdicht umgesetzt ist und es ist durchaus möglich, dass es gar nicht geht. Das musst Du also sauber prüfen, ob es theoretisch gemeinsam mit den Delphikomponenten Deinen Anwendungsfall abdeckt, ob es das praktisch auch tut (Mehrbenutzerumgebung, ...) und in Betracht ziehen, dass es keine wirkliche Lösung ist, denn normalerweise werden für soetwas andere Verfahren verwendet, die mysql aber nicht bietet.
Wenn überhaupt, eignet sich der Kram unten eher für SQL Scripts, mglw. kann das auch innerhalb Deiner Komponenten transaktionssicher durchgeführt werden.

Du kannst Dir 1. in mysql aus dem Information Schema den nächsten Auto Increment Wert je Tabelle holen und Du kannst 2. die zuletzt vergebene ID abfragen. Daraus kannst Du ggF. das zusammensetzen, was Du brauchst:
Nächste AutoID
Code:
SELECT AUTO_INCREMENT
  FROM INFORMATION_SCHEMA.TABLES
 WHERE TABLE_SCHEMA = 'myDB'
   AND TABLE_NAME = 'myTable';
Code:
LAST_INSERT_ID(); /*bzw*/ SELECT LAST_INSERT_ID();
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: MySQL, Unidac und AutoInc

  Alt 21. Jun 2015, 09:49
Wozu mußt du die neue Id des Masterdatensatzes kennen, bevor du ihn gespeichert hast? Mach es doch so, daß die Detail-Datensätze erst angelegt werden, nachdem der Masterdatensatz erzeugt wurde.
Der Frage kann ich mich nur anschließen. Solange ein Datensatz nicht gespeichert wurde, existiert er für eine DB nicht!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:52 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