tag:forum.selfhtml.org,2005:/selfTrotz -ON DUPLICATE KEY- wird immer neues feld erzeugt – SELFHTML-Forum2020-10-12T07:24:33Zhttps://forum.selfhtml.org/self/2020/oct/11/trotz-on-duplicate-key-wird-immer-neues-feld-erzeugt/1776419#m1776419Andrea_s2020-10-11T16:10:38Z2020-10-11T16:10:38ZTrotz -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#m1776420Rolf B2020-10-11T16:25:55Z2020-10-11T17:21:57ZTrotz -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#m1776422Andrea_s2020-10-11T16:38:59Z2020-10-11T16:38:59ZTrotz -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#m1776456Auge2020-10-12T07:24:33Z2020-10-12T07:24:33ZTrotz -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#m1776423Rolf B2020-10-11T17:21:19Z2020-10-11T17:21:19ZTrotz -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>