AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi nächste id im datensatz
Thema durchsuchen
Ansicht
Themen-Optionen

nächste id im datensatz

Ein Thema von Snoop007 · begonnen am 27. Aug 2003 · letzter Beitrag vom 16. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
Snoop007

Registriert seit: 15. Jan 2003
331 Beiträge
 
Delphi 6 Personal
 
#1

nächste id im datensatz

  Alt 27. Aug 2003, 13:59
hi,
ich füge mit TQuery einen neuen datensatz in eine paradox - tabelle ein.
nun würde ich gerne wissen, was für eine id ( automatischer wert ) dieser datensatz hat.

wie mache ich das, ohne extra einen select zu machen ? es geht mir einfach um die performance
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#2

Re: nächste id im datensatz

  Alt 27. Aug 2003, 14:10
Leider gar nicht. Zumindest nicht ohne ein Select.

Das Problem ist, daß der Datensatz nur um TQuery existiert, bis er an die DB geschickt wird. Die DB nimmt das SQL Statement an (INSERT INTO ...) und das wars. Eine Rückgabe welcher Key von der DB automatisch vergeben wurde erfolgt nicht.

Alternative: Ein SELECT auf die höchste ID machen, selber mitzählen und hoffen, daß kein anderer User inzwischen ein Insert macht. Das würde Deine Zählung nämlich verfälschen.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
svehei

Registriert seit: 10. Mär 2003
Ort: Bretten
54 Beiträge
 
Delphi 7 Professional
 
#3

Re: nächste id im datensatz

  Alt 27. Aug 2003, 15:58
normalerweise kannst du doch die id bei einem insert mit angeben?!?! oder liege ich da sehr falsch (kenn' mich mit paradox leider nicht aus). bei oracle, mssqls oder mysql funktionierts aber so!!!

bau dir einfach selber eine GUID und schieb die dann mit deinem sql-insert rein.
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: nächste id im datensatz

  Alt 27. Aug 2003, 16:14
Zitat von Snoop007:
id ( automatischer wert )
aus der Hilfe
Zitat:
Paradox-Zählerfelder enthalten Integer (lang). Die Werte können nur gelesen, nicht bearbeitet werden. Die Zählung beginnt bei 1 und wird für jeden Datensatz in der Tabelle um 1 erhöht.
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#5

Re: nächste id im datensatz

  Alt 27. Aug 2003, 17:26
Bis jetzt habe ich das auch immer mit einem zusätzlichen Select gemacht, was ja nicht gerade optimal ist.
PHP kennt zu Beispiel beim Zugriff auf MySQL einen Befehl, mit dem man die ID feststellen kann, ohne ein zusätzliches QUery!
Ich habe das Problem mit einer Interbase Datenbank, wir aber überall das gleiche sein!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: nächste id im datensatz

  Alt 27. Aug 2003, 21:42
Zitat von svehei:
normalerweise kannst du doch die id bei einem insert mit angeben?!?! oder liege ich da sehr falsch ....bau dir einfach selber eine GUID und schieb die dann mit deinem sql-insert rein.
Hai svehei,

das geht so weit ich das weis nicht! Wenn ich dem DB-Server sage er soll eine eindeutige ID vergeben habe ich darauf keine Einfluss.

Wenn Du selbst ein GUID vergibst (mache ich inzwichen auch) dann ist der DB-Server ja nicht mehr für die Vergabe einer ID zuständig.

Aber wir sollten mal Paul jr. fragen; der hat sicher eine Tipp für uns.

Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#7

hmm,

  Alt 27. Aug 2003, 22:33
IMHO geht dass nicht auf DBs die keine Transaktionen unterstützen.
ISt ja logisch, zwischen deinem Insert und den SEELCT könnte ein anderer Insert oder UPDAte abgearbeitet worden sein, dadurch bist du raus. Sogar auf Transactionservern hast du ein Problem wenn eventuell ein Trigger oder Constraint auf der Tabelle liegt die irgendetwas macht was du garnicht beeinflussen kannst.
  Mit Zitat antworten Zitat
Kalli

Registriert seit: 12. Jun 2003
Ort: Landau i.d. Pfalz
79 Beiträge
 
Delphi 2005 Enterprise
 
#8

Re: nächste id im datensatz

  Alt 28. Aug 2003, 09:41
Warum fügst Du den Datensatz mit TQuery ein.
Ich habe die gleichen Probleme, da ich meistens über den ID Tabellen in einer 1:n Beziehung verknüpfe.

Meine Vorgehensweise:

Tab_.Appand (oder Tab_.Insert)
Tab_[Variable].Value := Wert
....
Tab_.Post

Tab_.ID hat seinen neuen Wert für weiter Aufgaben.

Kalli
Karl Josef Ziller
  Mit Zitat antworten Zitat
Snoop007

Registriert seit: 15. Jan 2003
331 Beiträge
 
Delphi 6 Personal
 
#9

Re: nächste id im datensatz

  Alt 28. Aug 2003, 12:41
hi,
danke für eure antworten, schade das ich einen select machen muss, ich dachte, ich kann was sparen

ich füge die daten per TQuery ein,
weil ich daten über mehrere dabellen updaten / ändern / selectieren muss / kann / darf
  Mit Zitat antworten Zitat
Benutzerbild von Taladan
Taladan

Registriert seit: 5. Aug 2003
Ort: Osnabrück
505 Beiträge
 
Delphi 2005 Professional
 
#10

Re: nächste id im datensatz

  Alt 28. Aug 2003, 12:55
Greift ein TQuery nicht in der Regel auf ein vorhandes Tableobjekt zu? Dann müßte doch bei einen INSERT bei RequestLive-Query´s das Table doch automatisch in den selben zustand versetzt werden, oder hab ich da was falsch verstanden. Auch bei einen query1.next geht doch zumindest der logik nach die Table mit.

Dementsprechend müsste man doch auch mit eienen table1id.value bzw. table1.fieldbyname('id').value (oder .asinteger) die id abrufbar sein. Habs noch nie überprüft, aber ich glaub so arbeitet das query doch(solange RequestLive auf true steht)
Marco
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz