[GastForen Programmierung/Entwicklung PHP und MySQL SQL REPLACEoder Alternativen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

SQL REPLACEoder Alternativen

Pozor
Beiträge gesamt: 892

16. Mär 2004, 07:48
Beitrag # 1 von 5
Bewertung:
(964 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

mein Problem ist folgendes:

Ich habe in einer Tabelle diverse Einträge.
Nun möchte ich weitere einfügen, doch möglicherweise sind manche der neuen Eintäge schon in der Tabelle vorhanden und ich möchte keine doppelten Einträge produzieren.

REPLACE (Nach Definition):
REPLACE works exactly like INSERT, except that if an old record in the table has the same value as a new record on a UNIQUE index or PRIMARY KEY, the old record is deleted before the new record is inserted.

In der Tabelle eine id (PRIMARY KEY). Wie kann ich mein Problem mit einer MYSQL Anweisung lösen?

Tabellenstruktur:
id primary int(11) auto_increment
status int(1)
owner int(11)
timestamp timestamp(14)

folgendes funktioniert nicht (wiederholte Ausführung):

$query = "REPLACE tb_test (owner,status) VALUES (1,2)";
$result = mysql_query($query,$link);
if(2 == mysql_affected_rows())
{
echo 'Replace done!';
}else
{
echo 'New insert!';
}

es funktioniert, wenn man die erste Zeile ändert:

$query = "REPLACE tb_test (id,owner,status) VALUES (1,1,2)"; //zusätzlich id (PRIMARY KEY)

Das Problem ist, dass bei einem neuen Eintrag die ID natürlich NICHT manuell gesetzt werden sollte (auto_increment)... Wie kann man das umgehen? jedesmal die nächste einzusezende ID abzufragen? (Aufwand für DB hoch?)


Gruss Pozor

(Dieser Beitrag wurde von Pozor am 16. Mär 2004, 07:56 geändert)
X

SQL REPLACEoder Alternativen

oesi50
  
Beiträge gesamt: 2315

16. Mär 2004, 11:56
Beitrag # 2 von 5
Beitrag ID: #75231
Bewertung:
(964 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi Pozor,
die Lösung hast Du schon geschrieben:
"a new record on a UNIQUE index or PRIMARY KEY"

hier gibt es 2 Möglichkeiten, entweder Du legst für die Spalte 'owner' zusätzlich einen UNIQUE Index an, oder Du verwendest 'owner' direkt als Primärschlüssel. Die zweite Variante würde ich bevorzugen, da hier nur 1 Index notwendig ist. Ich gehe mal davon aus, daß es ohnehin jeden 'owner' Eintrag nur einmal gibt.
Wozu wird eigentlich die 'ID' verwendet?

zu Deiner Tabellenstruktur:

Gibt es bei Dir -1000000000 bis 1000000000 'owner'? Wenn nein, dann ist es sicher sinnvoller(und performanter) als Datentyp 'mediumint unsigned' zu verwenden. Das sind immer noch 1 bis 16000000 mögliche 'owner'.

CREATE TABLE test (
owner mediumint(8) unsigned NOT NULL default '0',
status tinyint(1) unsigned NOT NULL default '0',
timestamp timestamp(14) NOT NULL,
PRIMARY KEY (owner)
) TYPE=MyISAM;

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#75198]
(Dieser Beitrag wurde von oesi50 am 16. Mär 2004, 16:18 geändert)

SQL REPLACEoder Alternativen

Pozor
Beiträge gesamt: 892

16. Mär 2004, 21:02
Beitrag # 3 von 5
Beitrag ID: #75310
Bewertung:
(964 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo,

Ok, ja auf diese Loesung kahm ich auch schon.

Nun ok ev. sollte ich die Tabelle genauer beschreiben.

id INT (11) PRIMARY KEY auto_increment
status INDEX INT(1)
owner INT(11)
auth INT(11)
timestamp TIMESTAMP(14)

Es hat fuer jeder user mehrere Eintraege...
Das mit den Int fuer user und auth ist ok so wies ist (momentan)

Gruss Pozor


als Antwort auf: [#75198]

SQL REPLACEoder Alternativen

oesi50
  
Beiträge gesamt: 2315

16. Mär 2004, 22:50
Beitrag # 4 von 5
Beitrag ID: #75336
Bewertung:
(964 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
wenn der owner mehrfach in der Tabelle steht, dann hilft nur
UPDATE ... SET ..... WHERE owner = 'xxxx'
sind hier '0 rows affected'
dann ein INSERT .... ausführen.

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#75198]

SQL REPLACEoder Alternativen

Pozor
Beiträge gesamt: 892

16. Mär 2004, 23:01
Beitrag # 5 von 5
Beitrag ID: #75339
Bewertung:
(964 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

Ja das ist wie ich es bis anhin geloest hatte, doch ich suchte nach einer Loesung in einem Schritt. Die gibt es anscheinend nicht... darum habe ich Sie nicht gefunden?

Trozdem merci oesi50 fuer dein Einsatz!

Gruss Pozor


als Antwort auf: [#75198]
X

Aktuell

PDF / Print
Wolken_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
29.09.2022

IDUGS#85 Press2id

Zoom Meeting
Donnerstag, 29. Sept. 2022, 19.00 - 21.00 Uhr

Vortrag

Kennst du WordPress? Vielleicht. Verwendest du WordPress? Ja, klar! WordPress ist das am weitesten verbreitete System für die Erstellung von Webseiten. Um Webseitenbau soll es auf dieser IDUG aber nicht gehen. Gregor zeigt press2id (github.com/grefel/press2id). Seine Open-Source-Lösung für die Verbindung von Web und InDesign. Richtig gelesen: InDesign liest mithilfe von press2id die Inhalte der WordPress-Webseiten und generiert daraus Zeitschriften, Kataloge, Programmhefte oder Bierdeckel (das zeigen wir natürlich auch!). So wird die „Content First“ Theorie zu einer konkret anwendbaren Praxis, ohne gleich die ganz großen Räder zu drehen. Versprochen: Jeder kann nach der IDUG innerhalb kürzester Zeit Daten von WordPress nach InDesign importieren. Aber Achtung: Prinzipiell kann press2id aus jeder Website, oder besser Contentmanagementsystem (CMS) Daten auslesen und nach InDesign importieren! Spannend, oder? Danach geht es in die Praxis: Stefan hat die Webseite des Parktheater Iserlohn (parktheater-iserlohn.de) gestaltet. Die gedruckten Spielpläne (parktheater-iserlohn.de/interaktive-spielplaene) werden mit press2id realisiert. Wir schauen in den Maschinenraum und zeigen, wie die Lösung des Projekts realisiert wurde.

Nein

Organisator: InDesign Usergroup Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailidug AT satzkiste DOT de

https://idugs85.eventbrite.de/

Von Wordpress nach InDesign
Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022