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

Mitglied: condor83

condor83 (Level 1) - Jetzt verbinden

09.01.2008, aktualisiert 14.01.2008, 5304 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

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 3 StundenErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 5 StundenWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgborn vor 5 StundenMicrosoft3 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 2 TagenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1026 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall15 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)15 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...

Server-Hardware
Server für Exchange 2016, Kaufberatung
Frage von MazenauerServer-Hardware10 Kommentare

Guten Tag werte Gemeinde, Vorab: Ich dachte es gab mal einen separaten Bereich für solche Anfragen, habe ich leider ...