Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi UPDATE OR INSERT, Primary Key setzen oder nicht ? Warum ? (https://www.delphipraxis.net/150359-update-insert-primary-key-setzen-oder-nicht-warum.html)

RWarnecke 14. Apr 2010 18:50

Datenbank: Firebird Embedded • Version: 2.1.3 • Zugriff über: UniDAC

UPDATE OR INSERT, Primary Key setzen oder nicht ? Warum ?
 
Hallo zusammen,

ich bin an einem Punkt angekommen, wo ich anscheinend nicht um Primary Keys, Foreign Key und Indices drum rumkomme. Ich habe den Befehl UPDATE OR INSERT gefunden, den ich gerne einsetzen würde. Nur verlangt dieser einen Primary Key. Dann habe ich im Internet auch noch die Möglichkeit gefunden den Befehl UPDATE OR INSERT ohne einen Primary Key in der Tabelle definiert zu haben einzusetzen. Dazu hänge ich einfach den Befehl MATCHING an das Ende von UPDATE OR INSERT und danach noch einen Feldnamen der Tabelle.

Jetzt stellt sich mir die Frage, ist es sinnvoller den Primary Key in der Tabelle zu setzen und wenn ja warum ?
Was passiert, wenn ich irgendein Feld beim MATCHING angeben ? Kann ich mir damit die Daten in der Tabelle zerpflücken ?
Welche Erfahrungen habt Ihr mit dem Befehl UPDATE OR INSERT gemacht und wie setzt Ihr ihn ein ?

mkinzler 14. Apr 2010 18:54

Re: UPDATE OR INSERT, Primary Key setzen oder nicht ? Warum
 
PK <> MATCHING
Bei einem UPDATE OR INSERT gibt man zudem normalerweise keine ID an ( da diese idealerweise kein Teil der daten ist)
IM MATCHING gibst du die Feldkombination an, an welcher das DBMS erkennen kann, ob der Datensatz schon existiert.

RWarnecke 14. Apr 2010 18:58

Re: UPDATE OR INSERT, Primary Key setzen oder nicht ? Warum
 
Hallo Markus,

du schreibst, PK <> MATCHING. Dann verstehe ich nur nicht, warum ich auf eine Tabelle die keinen PK hat einen UPDATE OR INSERT BEfehl ohne MATCHING nicht absetzen kann. Setze ich dann in der Tabelle einen PK oder gebe das MATCHING an, dann funktioniert der UPDATE OR INSERT Befehl.

mkinzler 14. Apr 2010 19:02

Re: UPDATE OR INSERT, Primary Key setzen oder nicht ? Warum
 
Ohne das MATCHING wird der PK genommen, was bei syntetischen Schlüsseln keinen Sinn macht. Den diese werden ja vom DBMS automatisch vergeben.
Ein MATCHING bezieht sich aber auf die Daten.

RWarnecke 14. Apr 2010 19:08

Re: UPDATE OR INSERT, Primary Key setzen oder nicht ? Warum
 
Ok, dann werde ich wohl das Matching verwenden.

mkinzler 14. Apr 2010 19:16

Re: UPDATE OR INSERT, Primary Key setzen oder nicht ? Warum
 
Ist imho sinnvoller.
So kannst du z.B. angeben, das eine Person durch Name, Vorname, GebDat eindeutig identifiziert werden soll ( matching)
Wird nun ein neuer datensatz eingefügt, bei dem der diese Kombination mit einem vohandenen Satz übereinstimt, wird dieser upgedatet, d.h alle Felder in der Feldliste (ausser den 3) werden mit den neuen Werten ersetzt

RWarnecke 14. Apr 2010 19:21

Re: UPDATE OR INSERT, Primary Key setzen oder nicht ? Warum
 
Danke Markus für Deine Hilfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:19 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