AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi UPDATE OR INSERT INTO - Problem
Thema durchsuchen
Ansicht
Themen-Optionen

UPDATE OR INSERT INTO - Problem

Ein Thema von RWarnecke · begonnen am 31. Jul 2011 · letzter Beitrag vom 1. Aug 2011
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.364 Beiträge
 
Delphi 12 Athens
 
#1

AW: UPDATE OR INSERT INTO - Problem

  Alt 1. Aug 2011, 06:16
Man könnte doch über ein SubSelect versuchen eine ID zu finden und wenn keine gefunden wurde, dann eben NULL verwenden?

Nur die Frage ist, was man für dieses SubSelect für die eindeutige Erkennug nutzt, wenn was geändert wurde

Also eigentlich sollte ja eine ID für die Eindeutigkeit da sein und wenn man einen Datensatz ändert, mußte man ihn doch vorher ausgelesen haben?
Da sollte man sich die ID gleich mitnehmen und schon gibt es beim Absenden keine Probleme mehr, mit dem Insert or Update.


Wobei ID ja aktuell noch nicht eindeutig ist. Also PrimaryKey und Co. wären da ganz angebracht.
Also dürfte hier doch immer das Insert zuschlagen, egal was man angibt, da nirgendwo eine eindeutige Kennzeichnung möglich ist?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

AW: UPDATE OR INSERT INTO - Problem

  Alt 1. Aug 2011, 07:21
Guten Morgen zusammen,

erstmal danke für die vielen Antworten. Das Feld ID ist ein AutoInc und wird über einen Trigger gefüllt. Die ID vorher auszulesen und dann mitzugeben, wäre kein Problem. Das werde ich heute Abend mal ausprobieren.

Ein geteiltes Update und Insert wollte ich eigentlich gerne vermeiden. Deshalb habe ich den Befehl UPDATE OR INSERT gewählt.

Wenn ich einen Primary Key setze, könnte ich doch mir die MATCHING-Anweisung sparen ? Oder muss ich die Anweisung trotzdem benutzen ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#3

AW: UPDATE OR INSERT INTO - Problem

  Alt 1. Aug 2011, 07:28
In der MATCHING-Klausel gibst Du ja die Felder an, die einen Datensatz eindeutig identifizieren (sollen). Wenn sich nun also der Nachname ändert und dieser Teil der MATCHING-Klausel ist, wird logischerweise ein neuer Datensatz angelegt. Wenn Du nun irgendein Feld/eine Kombination von Feldern als UNIQUE deklarieren kannst, bietet sich dieses dann auch als Kandidat für die MATCHING-Klausel an.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: UPDATE OR INSERT INTO - Problem

  Alt 1. Aug 2011, 07:41
Hallo RWarnecke,

ja, sobald du die ID hast bei der du den Eintrag ändern will reicht das ohne MATCHING. Um zu vermeiden, dass du zwei Statemants brauchst, könntest du dort in den Code einbauen, dass der Paramterwert für ID auf NULL gesetzt wird, wenn ein neuer Datensatz gemacht / erstellt wird. Sowas in der Art von:
Delphi-Quellcode:
if theID <> -1 then
begin
  ParamByName('ID').AsInteger := theID;
end else
begin
  ParamByName('ID').Clear;
end;
Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
542 Beiträge
 
Delphi 12 Athens
 
#5

AW: UPDATE OR INSERT INTO - Problem

  Alt 1. Aug 2011, 07:38
Denke, dass hier 2 Tabellen gebraucht werden, also eine mit den Kunden-Basisdaten (Adresse, Bank usw). Daraus kann man dann die KundenNr als Fremdschlüssel verwenden.

Außerdem würde ich "Update or Insert" bei der direkten Bearbeitung der D nicht verwenden. Entweder ändern oder neu, das sollte der Bearbeiter entscheiden. Die Nr für den Ansprechpartner kann automatisch über den Trigger generieren. Ein Primärschlüssel auf AnsprechpartnerNr würde die Sache dann noch perfekt machen.
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:23 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