bituniverse.com Foren-Übersicht bituniverse.com
Entwickler Forum
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

REPLACE spalte++

 
Neues Thema eröffnen   Neue Antwort erstellen    bituniverse.com Foren-Übersicht -> Datenbanken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Holger (HMR)



Anmeldedatum: 12.11.2007
Beiträge: 78

BeitragVerfasst am: Do 14 Aug, 2008 15:39    Titel: REPLACE spalte++ Antworten mit Zitat

Hallo Zusammen,

möchte eine Spalte, smallint, um 1 erhöhen,
wenn Primärindex nicht existiert soll Datensatz eingefügt werden.
geht das überhaupt???
Vermute mal nicht, da der Datensatz VOR dem Schreiben gelöscht wird.
Bin mit aber nicht sicher, vielleicht mache ich ja auch nur was falsch
und der schwirrt noch in irgendeinem cache rum

feld1 - varchar primäreindex
feld2 - varchar
feld3 - smallint

Php:
  1. <?php
  2.       $query="REPLACE INTO tabelle
  3.            set
  4.            feld1='".$var1."',
  5.            feld2='".$var2."',
  6.            feld3++
  7.        ";
  8.  
  9.       $query="REPLACE INTO tabelle
  10.            set
  11.            feld1='".$var1."',
  12.            feld2='".$var2."',
  13.            feld3=feld3+1
  14.        ";
  15.       $query="REPLACE INTO tabelle
  16.            set
  17.            feld1='".$var1."',
  18.            feld2='".$var2."',
  19.            feld3=feld3++
  20.        ";
  21. ?>

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Slava
Administrator


Anmeldedatum: 16.01.2007
Beiträge: 258
Wohnort: Köln

BeitragVerfasst am: Fr 15 Aug, 2008 21:05    Titel: Antworten mit Zitat

replace, autoincrement und insert_id kann nur bei einem key funktionieren.
sonnst würde ich empfehlen in einer transaction erst max(feld3) mit isolation level dev.mysql.com READ COMMITTED ermitteln und danach direkt insert machen.
die Transactionen in Mysql können aber nur bei innoDb Tabellen existieren.
wenn du bei myisam Tabellen erst max(feld3) ermittelst, dann kann es vorkommen, dass gerade andere thread das gleiche tut und das gleiche wert in feld3 schreibt. Wenn du weiter mit Myisam arbeiten willst, mach wenigstens aus deinem feld3 ein UNIQUE KEY.

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Holger (HMR)



Anmeldedatum: 12.11.2007
Beiträge: 78

BeitragVerfasst am: So 17 Aug, 2008 15:15    Titel: Antworten mit Zitat

Hallo Slava,
danke für die Ausführungen.

Ein UNIQUE KEY ist leider nicht möglich, die Tabelle ist ein counter für favoriten.

Im Moment mache ich es in der Tat mit wert holen, aufzählen, schreiben.

Mit den Themen: isolationslevel READ COMMITTED innoDB muß ich mich erst einmal beschäftigen. Das ist für mich Neuland.
Solange muß ich mit der möglichen Abweichung durch parallele Threads leben.

Du hast mir sehr geholfen, und mal wieder meinen Horizont erweitert. Very Happy

DANKE !

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    bituniverse.com Foren-Übersicht -> Datenbanken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB2.de
Powered by WebRing.