![]() |
Datenbank: MySQL • Zugriff über: Devarts
Update in MySQL
Hi,
ich Update meine Mysql in dieser form: [delphi]Query.SQL.Text:='UPDATE `Tabelle` Set ....[delphi] Und es gibt Datensätze die als Unique definiert sind. Wie kann ich nun Daten Updaten ohne das ein Fehler auftritt. Das Heiß: Datensatz1: Name=Test nun will ich diesen Datensatz Updaten aber belasse den Namen= Test, so bekomm ich die Fehlermeldung keine doppelten Datensätze, obwohl ich nur diesen einen Datensatz Update. |
Re: Update in MySQL
Stimmt die WHERE-Bedingung evtl. nicht? Ansonsten sieht das OK aus.
|
Re: Update in MySQL
Das einfügen an sich ist ja kein Problem, nur da manche Datensätze als Unique definiert sind sagt Mysql Halt Stop der Datensatz existiert schon den möchte ich nciht nochmal drin stehen haben ;)
Jedoch möchte ich nur den einen Datensatz updaten. Nochmal kleines Beispiel: Wert: Name = Testname (Unique in DB) Preis = TestPreis Anzahl = TestAnzahl Nun möchte ich diesen Datensatz lediglich Updaten in: Wert: Name = Testname (Unique in DB) Preis = TestPreisXYZ Anzahl = TestAnzahlXYZ Dann sagt mir DB Stop Testname eistiert schon. |
Re: Update in MySQL
Zeig doch mal das komplette Update-Statement.
|
Re: Update in MySQL
Delphi-Quellcode:
FormMain.QueryCustomer.SQL.Text:='UPDATE `'+Tabelle.Customer+'` Set '+
'`anrede`='''+FormKunden.ComboBoxAnrede.Items[FormKunden.ComboBoxAnrede.ItemIndex]+''','+ '`company_name`='''+FormKunden.EditCompany.Text+''','+ '`company_description`='''+FormKunden.EditDescription.Text+''';'+ 'WHERE `Customer_Number`='''+Customer.Customer_number+''';'; FormMain.QueryCustomer.Execute; //SQL-Statement ausführen |
Re: Update in MySQL
Ich vermute mal, Customer_Number ist der PK. Was ist der UNIQUE KEY?
[edit] Mit SQL-Parametern wärst Du übrigens besser bedient. [/edit] |
Re: Update in MySQL
Zitat:
Firmenname und Kundennummer sind Unique |
Re: Update in MySQL
Dann scheint es so, als sei der Firmenname bereits in einem anderen Datensatz vorhanden.
|
Re: Update in MySQL
Ist er allerdings nicht. Nur in seinen eigenen Datensatz. Nur DB nimmt an das ich Ihn doppelt eintragen möchte bei den Update.
Wäre er doppelt drin, hät ich es ja nicht als Unique definieren dürfen udn Mysql hätte gemeckert. Als einzigsten Weg den ich sehe, muss ich die Exception abfangen und dann den Datensatz ohne den Unique Wert speichern, da er ja sowieso schon in der DB steht und nicht wirklich geupdatet werdne muss oder seh ich as falsch? Allerdings wie fange ich diese Exception korrekt ab? Erste Gelegenheit für Exception bei $773842EB. Exception-Klasse EMySqlException mit Meldung ' #23000Duplicate entry 'Test Firma' for key 2'. Prozess Verwaltungs_Manager.exe (4524)
Delphi-Quellcode:
Except on e: ???? do Begin ..... end; end; |
Re: Update in MySQL
Zitat:
Viele Grüße, |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:15 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 by Thomas Breitkreuz