Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

MySQL herausfinden ob INSERT oder UPDATE

Frage Entwicklung Datenbanken

Mitglied: condor83

condor83 (Level 1) - Jetzt verbinden

09.01.2008, aktualisiert 14.01.2008, 5289 Aufrufe, 7 Kommentare

Hallo...

Ich versuch da etwas in MySQL zu Realisiern und hoffe auf eure Hilfe.

Ich möchte Daten (als beispiel a=1, b=2, c=3) in eine Tabelle schreiben aber es soll vorher (zb mit einer art IF anweisung) geprüft werden, ob es bereits einen Datensatz gibt, bei dem a=1 und b=2 . wenn ja dann soll in diesem Datensatz nur c mit UPDATE aktualisiert werden, wenn er nicht existiert soll er mit INSERT angelegt werden.

mit REPLACE kann ich glaub ich nicht arbeiten da ja a und b stimmen müssen werden

wie das ganze mit hilfe von php funktionieren würde weiß ich - ich brauch es aber in sql

ist das überhaupt möglich und wenn ja bin ich für jede hilfe dankbar

lg
condor
Mitglied: SlainteMhath
09.01.2008 um 09:39 Uhr
Moin,

welche Version von MySQL wird denn benutzt?

Ggfs. kanst Du das mit Stored Procedures abbilden, siehe http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html
Bitte warten ..
Mitglied: condor83
09.01.2008 um 11:11 Uhr
Danke erst mal für die Antwort!

ich arbeit derzeit local mit der 5er Version. Aber das projekt sollte irgendwann mal online gehen und derzeit hab ich noch keinen anbieter und weiß auch dessen version nicht. aber wenn die 5.1 notwendig ist werd ich mir schon einen entsprechenden Anbieter suchen.

Das mit den proceduren wär möglich - aber das würden dann eine große menge verschiedener gespeicherter prozeduren werden! wär es da sinnvoll die prozedur zu erstellen - ausführen und wieder löschen und für die nächste andere abfrage wieder erstellen - ausführen - löschen?

gibts vielleicht auch eine andere möglichkeit?
Bitte warten ..
Mitglied: pi314
11.01.2008 um 08:57 Uhr
Hi,

wie wär's mit einem Trigger auf die Tabelle?
Hier kannst du bei INSERT prüfen, ob es diesen Satz bereits gibt und ihn ggf. updaten.

Desweiteren wäre ein Unique-Constraint auf deine Spalten A und B sinnvoll.
Dann hast du bereits gesichert, dass es A und B nicht gleich sein können innerhalb deiner Tabelle.

In deinem Fall könnte die auch die MERGE-Anweisung helfen.
Hier kannst du dein Logik zum Einfügen abbilden.

Genaue Syntax für MySQL hab' ich nicht im Kopf
aber Google hilft da bestimmt

greetz,
pi
Bitte warten ..
Mitglied: condor83
11.01.2008 um 11:46 Uhr
Das mit dem Trigger muß ich mir mal genau Anschauen...

Ein Uniqe auf die Spalte A und B währe ja nicht sinnvoll denn es sollte folgendes möglich sein:

A | B | C
1 1 ?
1 2 ?
2 2 ?
2 1 ?

aber nicht

1 1 ?
1 1 ?

oder ist mit uniqu mehr möglich als ich weiß?

und MERGE hab ich in der MySQL-Dokumentation nur als Tabellentüp Speicherengine gefunden - ich glaub nicht das du das meinst.... - Wed mich da mal weiter umschauen
Bitte warten ..
Mitglied: pi314
11.01.2008 um 13:46 Uhr
Wenn du dein Unique-Constraint auf mehrere Spalten anlegst,
sind alle Möglichkeiten dieser Spalten eindeutig.


UC auf Spalte A:
01.
A   B   C 
02.
1   0   0 
03.
1   0   0 <-- nicht möglich
UC auf Spalten A+B:
01.
A   B   C 
02.
1   0   0 
03.
1   1   0 
04.
0   1   0 
05.
0   1   1 <-- nicht möglich
UC auf Spalten A+B+C:
01.
A   B   C 
02.
1   0   0 
03.
1   0   1 
04.
1   1   1 
05.
1   1   0 ... 
06.
1   1   0 <-- nicht möglich
Es ist also genau das möglich, was du willst - wenn ich dich richtig verstanden habe .
Ich schau mal, ob ich ein Bespiel für Merge in MySQL finde..

so long,
pi
Bitte warten ..
Mitglied: pi314
11.01.2008 um 14:33 Uhr
Habe noch eine weitere Möglichkeit gefunden: ON DUPLICATE KEY UPDATE
http://dev.mysql.com/doc/refman/5.1/de/insert-on-duplicate.html

Du muss dazu allerdings deine Spalten A und B als PK oder Unique deklarieren.


Merge ist im SQL2003-Standard deklariert:
01.
    MERGE INTO table_name USING table_name ON (condition) 
02.
    WHEN MATCHED THEN UPDATE SET column1 = value1 [, column2 = value2 ...] 
03.
    WHEN NOT MATCHED THEN INSERT column1 [, column2 ...] VALUES (value1 [, value2 ...]) 
Habe ein bisschen probiert, aber es nicht mit der gleichen Tabelle geschafft, dass da was vernünftiges rauskommt.

Also: verwende ON DUPLICATE KEY UPDATE

greetz,
pi
Bitte warten ..
Mitglied: condor83
14.01.2008 um 06:38 Uhr
hey super - danke - werd mir das genauer anschauen!!!
Bitte warten ..
Ähnliche Inhalte
Suse
MySQL - mysqladmin-Pfad herausfinden?
gelöst Frage von McLionSuse2 Kommentare

Hallo, ich möchte den Pfad für mysqladmin gerausfinden, wie geht das? Mit "find / -name mysqladmin -type f" finde ...

Microsoft Office
Access 2013 - Beispiel für mehrfach Update und Insert
Frage von evolutionMicrosoft Office2 Kommentare

Hallo, ich bin auf der Suche nach einem Beispiel für eine mehrfaches update und insert in Access 2013. Ich ...

PHP
MySQL Update eines Datensatz mit Variable
gelöst Frage von Jens4everPHP4 Kommentare

Hallo zusammen, ich habe jetzt 2 h gesucht und versucht und komme gerade nicht weiter Ich habe eine Mail-Verifizierung ...

Datenbanken
XML insert-update in einer MS SQL DB
gelöst Frage von teslajrDatenbanken8 Kommentare

Hallo Leute Mein Code zum importieren einer xml in die MS SQL 2008 DB funktioniert, jedoch möchte ich dass ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 6 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 7 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 14 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server15 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...