Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

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

AW: SQL Automatisch zugeteilte Id ermitteln.

  Alt 14. Jul 2014, 14:09
Die ganze Diskussion ist doch eigentlich unsinnig, denn
  1. Niemand bestreitet, dass ein RDBMS eine ID generieren kann
  2. Die Diskussion damit anfing, dass es Provider gab/gibt die es nicht schaffen diese vom RDBMS generierte ID zurück in das DataSet zu liefern.
    Beobachtetes Verhalten
    Der Datensatz war korrekt eingetragen, hatte vom RDBMS eine ID zugewiesen bekommen, aber im DataSet war dieser Datensatz immer noch mit leerem ID Feld. Um die ID zu erhalten musste das Dataset neu geladen werden und nun war das große Rätselraten, welcher Datensatz nun der war, der da gerade eingetragen wurde.
Irgendwie dreht sich der Kern dieser Diskussion darum, dass der eine meint, dass der andere meint, dass ein RDBMS keine IDs generiert, was aber niemand bezweifelt (1).

Das Thema geht eigentlich um Punkt (2) und der ist irgendwie nicht Thema der Diskussion ...

Sollte also der Provider es nicht schaffen die von MySQL (das ist das RDBMS dieses Themas) generierte ID zu liefern, dann geht man eben den folgenden Weg:
SQL-Code:
CREATE TABLE `foo` (
  `foo_id` int NOT NULL AUTO_INCREMENT ,
  `foo_value` varchar(50) NOT NULL ,
  PRIMARY KEY (`foo_id`) );
Delphi-Quellcode:
LQuery.SQL.Text := 'INSERT INTO foo (foo_value) VALUES (:foo_value); SELECT LAST_INSERT_ID() Foo_ID;';
LQuery.ParamByName('foo_value').Value := 'bar';
LQuery.Open;
LId := LQuery.FieldByName('Foo_ID').Value;
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)

Geändert von Sir Rufo (14. Jul 2014 um 14:14 Uhr)
  Mit Zitat antworten Zitat