tag:forum.selfhtml.org,2005:/self Trotz -ON DUPLICATE KEY- wird immer neues feld erzeugt – SELFHTML-Forum 2020-10-12T07:24:33Z https://forum.selfhtml.org/self/2020/oct/11/trotz-on-duplicate-key-wird-immer-neues-feld-erzeugt/1776419#m1776419 Andrea_s 2020-10-11T16:10:38Z 2020-10-11T16:10:38Z Trotz -ON DUPLICATE KEY- wird immer neues feld erzeugt <p>Hallo,</p> <p>ich würde gerne eine eigene Seitenstatistik erstellen. Dazu möchte ich den Wert in der MYSQL Datenbank immer um einen Wert erhöhen.</p> <pre><code class="block">INSERT INTO seitenzugriff SET datum='2020-10-11',zaehler=1 ON DUPLICATE KEY UPDATE zahler = zaehler + 1 </code></pre> <p>Laut MYSQL Refernez sollte das funktionieren, doch wird mir für jedes mal, anstatt das der Wert erhöht wird, ein neues Datumsfeld erstellt.</p> <p>Andreas</p> https://forum.selfhtml.org/self/2020/oct/11/trotz-on-duplicate-key-wird-immer-neues-feld-erzeugt/1776420#m1776420 Rolf B 2020-10-11T16:25:55Z 2020-10-11T17:21:57Z Trotz -ON DUPLICATE KEY- wird immer neues feld erzeugt <p>Hallo Andreas,</p> <p>damit das funktioniert, muss es zu einer DUPLICATE KEY Bedingung kommen. Dafür muss das Datum der Primärschlüssel der Tabelle sein. Ist das der Fall?</p> <p><strong>Edit: Der folgende Teil ist Blödsinn!</strong></p> <p>Sodann muss das UPDATE-Statement im <code>ON DUPLICATE KEY</code> Teil valide sein. Das ist es nicht. Es sollte lauten:</p> <pre><code class="block language-sql"><span class="token keyword">UPDATE</span> seitenzugriff <span class="token keyword">SET</span> zaehler<span class="token operator">=</span>zaehler<span class="token operator">+</span><span class="token number">1</span> <span class="token keyword">WHERE</span> datum<span class="token operator">=</span><span class="token string">'2020-10-11'</span> </code></pre> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2020/oct/11/trotz-on-duplicate-key-wird-immer-neues-feld-erzeugt/1776422#m1776422 Andrea_s 2020-10-11T16:38:59Z 2020-10-11T16:38:59Z Trotz -ON DUPLICATE KEY- wird immer neues feld erzeugt <p>Dafür muss das Datum der Primärschlüssel der Tabelle sein. Ist das der Fall?</p> <p><strong>Nein, das war der Fehler!</strong></p> <pre><code class="block">INSERT INTO seitenzugriff SET datum=CURDATE(),zaehler=1 ON DUPLICATE KEY UPDATE zaehler = zaehler + 1 </code></pre> <p>Jetzt funktioniert es, ich habe nun noch das Datum, CURDATE() geändert.</p> <hr> <p>Meinst du, das ist nicht valide?</p> <p>UPDATE zaehler = zaehler + 1</p> <p>und ich sollte es in etwa so abändern?</p> <p>UPDATE seitenzugriff SET zaehler=zaehler+1 WHERE datum='2020-10-11'</p> https://forum.selfhtml.org/self/2020/oct/11/trotz-on-duplicate-key-wird-immer-neues-feld-erzeugt/1776456#m1776456 Auge 2020-10-12T07:24:33Z 2020-10-12T07:24:33Z Trotz -ON DUPLICATE KEY- wird immer neues feld erzeugt <p>Hallo</p> <blockquote> <p>damit das funktioniert, muss es zu einer DUPLICATE KEY Bedingung kommen. Dafür muss das Datum der Primärschlüssel der Tabelle sein. Ist das der Fall?</p> </blockquote> <p>Bist du sicher, dass das Vergleichsfeld ein <em>Primär</em>schlüssel sein muss? Mir was so, als würde es reichen, dass gegen einen Schlüssel geprüft wird, der unique ist.</p> <p><strong>*rumsuch kram tast*</strong> Ah, <a href="https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html" rel="nofollow noopener noreferrer">da haben wir's ja</a>.</p> <blockquote> <p>„<em>If you specify an ON DUPLICATE KEY UPDATE clause and a row to be inserted would cause a duplicate value in a <strong>UNIQUE index or PRIMARY KEY</strong>, an UPDATE of the old row occurs.</em>“</p> </blockquote> <p>Hervorhebung von mir.</p> <p>Der Schlüssel muss also <em>eindeutig</em> sein. Es kann sich im übrigen auch um einen eindeutigen Schlüssel, der aus mehreren Feldern zusammengesetzt ist, handeln.</p> <p>Tschö, Auge</p> <div class="signature">-- <br> Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.<br> <em>Hohle Köpfe</em> von Terry Pratchett </div> https://forum.selfhtml.org/self/2020/oct/11/trotz-on-duplicate-key-wird-immer-neues-feld-erzeugt/1776423#m1776423 Rolf B 2020-10-11T17:21:19Z 2020-10-11T17:21:19Z Trotz -ON DUPLICATE KEY- wird immer neues feld erzeugt <p>Hallo Andrea_s,</p> <p>ich sehe mich korrigiert. MySQL ist nicht meine Standard-DB, und ich hatte da etwas falsch im Kopf.</p> <p>Dein Statement ist richtig, meins falsch.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div>