php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.04.2006, 09:46  
Benutzer
 
Registriert seit: 01.08.2005
Beiträge: 46
axelnes
Standard Wenn datensatz existier update sonst insert

Hallo gibt es eine elegante lösungung folgendes in einem Query zu realiseren.

Wenn ein Datensatz existiert soll ein Update sonst ein insert durchgeführt werden.

Klar mit PHP kann ich das auch machen, gibt es aber dafür nicht eine elegantere MySQL Lösung?

Axel
__________________
A-NES Internet-Lösungen
Axel Neswadba

www.a-nes.de
axelnes ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.04.2006, 10:03  
Erfahrener Benutzer
 
Registriert seit: 18.11.2005
Beiträge: 126
Clint
Standard

Ist php nicht elegant?
Mysql unterstützt kontrollstrukturen einfach nachschauen
wie du es am besten machst!
Clint ist offline   Mit Zitat antworten
Alt 27.04.2006, 10:19  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.232
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Wenn du einen entsprechenden Unique Key hast bzw. Primary Key: Alternativ mache zuerst den Insert, wenn dieser auf einen ganz bestimmten mysql_error stösst (DupKey, ausprobieren, welche Fehlernummer das gibt bei mysql_errno) mache noch einmal einen Update hinterher.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 27.04.2006, 11:18  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

RTFM: REPLACE INTO . http://dev.mysql.com/doc/refman/4.1/en/replace.html
axo ist offline   Mit Zitat antworten
Alt 27.04.2006, 11:22  
Benutzer
 
Registriert seit: 01.08.2005
Beiträge: 46
axelnes
Standard

bringt mir gar nichts da ich den Werte des Primary Keys zuvor kennen Muß, ich habe allerdings eine zusammengesetzten schlüssel, wo keiner für sich unique ist... erst zusammen.

Ich kann leider in der Beschreibung keinen Fall für einen zusammengestzen schlüssel erkennen.
__________________
A-NES Internet-Lösungen
Axel Neswadba

www.a-nes.de
axelnes ist offline   Mit Zitat antworten
Alt 27.04.2006, 15:45  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.232
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Zudem impliziert REPLACE INTO, dass du ausnahmslos alle ursprünglichen Felder deines Datensatzes kennen musst, was so nicht immer der Fall ist.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 27.04.2006, 16:31  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von axelnes
Ich kann leider in der Beschreibung keinen Fall für einen zusammengestzen schlüssel erkennen.
es reicht, einen primary- oder unique-schlüssel zu haben. ist ja egal, ob das nur eine spalte ist oder mehrere.

Zitat:
Zudem impliziert REPLACE INTO, dass du ausnahmslos alle ursprünglichen Felder deines Datensatzes kennen musst, was so nicht immer der Fall ist.
das stimmt so auch nicht. erstens muss ein update nicht alle felder updaten, und zweitens impliziert die fragestellung schon, dass man durchaus vorher erkennen kann, ob ein datensatz bereits existiert. das heißt, der primary key muss, wenn vorhanden, bekannt sein.

btw gibt's natürlich auch INSERT INTO ... ON DUPLICATE KEY UPDATE ... wenn das dem op lieber ist.
axo ist offline   Mit Zitat antworten
Alt 27.04.2006, 16:48  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.232
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von axo
Zitat:
Zudem impliziert REPLACE INTO, dass du ausnahmslos alle ursprünglichen Felder deines Datensatzes kennen musst, was so nicht immer der Fall ist.
das stimmt so auch nicht. erstens muss ein update nicht alle felder updaten, und zweitens impliziert die fragestellung schon, dass man durchaus vorher erkennen kann, ob ein datensatz bereits existiert. das heißt, der primary key muss, wenn vorhanden, bekannt sein.

btw gibt's natürlich auch INSERT INTO ... ON DUPLICATE KEY UPDATE ... wenn das dem op lieber ist.
aber bei replace into musst du alle Felder kennen. Wenn der Autor aber nur den Primary Key kennt und dann beispielsweise per Update einen Counter hochzäglen will (spalte=spalte+1), aber 20 weitere Spalten nicht kennt, geht das mit dem REPLACE INTO nicht.

Ansonsten hast du recht. Aber probier das mal mit MySQL 4.0 Bis auf diese Einschränkung kann mans verwenden. Bin nur eher der Ansi-SQL Typ, deswegen fällt mir sowas nicht ein...
mepeisen ist offline   Mit Zitat antworten
Alt 27.04.2006, 17:01  
Gast
 
Beiträge: n/a
Standard

Klingt eindeutig nach ON DUPLICATE KEY UPDATE
http://dev.mysql.com/doc/refman/5.1/...duplicate.html
  Mit Zitat antworten
Alt 27.04.2006, 23:49  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von mepeisen
aber bei replace into musst du alle Felder kennen. Wenn der Autor aber nur den Primary Key kennt und dann beispielsweise per Update einen Counter hochzäglen will (spalte=spalte+1), aber 20 weitere Spalten nicht kennt, geht das mit dem REPLACE INTO nicht.
ah, jetzt verstehe ich, was du meinst. klar. also dann INSERT ... ON DUPLICATE KEY UPDATE ...

und naja, wenn's die datenbank nicht mitmachen kann, muss halt doch php herhalten.

grüße
axo
axo ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bei UPDATE erkennen, ob der Datensatz existiert? Anotherone Datenbanken 7 01.04.2008 14:49
INSERT.. ON DUPLICATE KEY UPDATE cycap Datenbanken 3 26.10.2007 13:08
Pathfinding Algorithmus optimieren? (Algorith. von Dijkstra) Martin13 PHP Tipps 2007 19 04.09.2007 19:20
Update und Insert in einem ? sponer Datenbanken 6 01.07.2007 16:02
Update -> AffectedRows -> Insert R4v3r Datenbanken 6 12.06.2007 11:13
UPDATE eintrag falls vorhanden ansonsten INSERT Plague Datenbanken 4 19.01.2007 13:36
INSERT.. on duplicate key UPDATE... - sinnvoll? mrSpok Datenbanken 3 28.11.2006 10:14
Differenz zwischen 2 Zahlen duderino PHP Tipps 2006 19 10.08.2006 22:12
Weder Update noch Insert funktioniert... MessengerNews! Datenbanken 3 31.07.2006 08:39
PRoblem mit Cookie bei PHPbb-Board PHP Tipps 2007 8 12.12.2005 20:56
PHP-Fehlermeldung, weiss nicht mehr weiter PHP Tipps 2005-2 12 21.09.2005 12:56
[Erledigt] fehler den ich noch nie gesehen habe Datenbanken 7 09.06.2005 14:29
Update von ausgelesenem Datensatz Datenbanken 3 12.10.2004 10:18
Insert und Update Befehl funktioniert nicht Anuschka Datenbanken 2 03.09.2004 00:38
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql php insert statt update wenn datensatz nicht, update sonst insert, insert sonst update, wenn datensatz vorhanden nur updaten mysql, mysql wenn datensatz vorhanden update ansonsten insert, mysql update sonst insert, tsql insert wenn datensatz nicht vorhanden, php update sonst insert, mysql wenn datensatz existiert update, sonst ansonsten anlegen, dupkey sql php, falls vorhanden dann update sonst insert, php replace into mehrere keys, mysql insert or update elegant, mysql update wenn zeile schon existiert sonst insert, mysql sonst, mysql sql insert into wenn nicht vorhanden, sql wenn nicht vorhanden insert sonst update replace, mysql insert duplicate key update mehrere felder, mysql wenn datensatz vorhanden, dann update, sonst insert, insert fehler primary key der schon existiert

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.