<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>best practise - redundanz bei SQL inserts vermeiden</title>
    <link>http://forum.geizhals.at/feed.jsp?id=906846</link>
    <description>Geizhals-Forum</description>
    <item>
      <title>Re(2): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8181431.html#8181431</link>
      <description>&lt;blockquote&gt;&lt;em&gt; INSERT ... ON DUPLICAT&lt;br&gt;&lt;/em&gt;&lt;/blockquote&gt;&lt;br&gt;Das ist MySQL's Art, "MERGE" zu sagen. MERGE ist halt ANSI SQL.&lt;br/&gt;</description>
      <pubDate>Tue, 07 May 2024 13:41:05 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8181431.html#8181431</guid>
      <dc:creator>hhetl</dc:creator>
      <dc:date>2024-05-07T13:41:05Z</dc:date>
    </item>
    <item>
      <title>Re: best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8181375.html#8181375</link>
      <description>ich habe das bei mir bei einer lösung mit INSERT ... ON DUPLICATE (&lt;a href="https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html" rel="noopener" target="_blank"&gt;https:/&lt;wbr/&gt;/&lt;wbr/&gt;dev.mysql.com/&lt;wbr/&gt;doc/&lt;wbr/&gt;refman/&lt;wbr/&gt;8.0/&lt;wbr/&gt;en/&lt;wbr/&gt;insert-on-duplicate.html&lt;/a&gt; ) gelöst. Keine Ahnung ob das sinnvoll ist, aber es funktioniert.&lt;br/&gt;</description>
      <pubDate>Mon, 06 May 2024 15:33:33 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8181375.html#8181375</guid>
      <dc:creator>sky</dc:creator>
      <dc:date>2024-05-06T15:33:33Z</dc:date>
    </item>
    <item>
      <title>Re(4): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180893.html#8180893</link>
      <description>Was hindert dich an einem Upsert?&lt;br/&gt;</description>
      <pubDate>Fri, 26 Apr 2024 13:57:36 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180893.html#8180893</guid>
      <dc:creator>pong</dc:creator>
      <dc:date>2024-04-26T13:57:36Z</dc:date>
    </item>
    <item>
      <title>Re(3): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180891.html#8180891</link>
      <description>hab mich dazu entschlossen, vor dem insert eine abfrage zu starten, die auf duplikate prüft, den unique constraint aber drinnen zu lassen. verursacht weniger db load als temporäre tabellen (und ist einfacher umzusetzen)&lt;br&gt;&lt;br&gt;damit reduzieren sich die fälle, wo der constraint ausgelöst wird auf ein minimum.&lt;br&gt;eliminieren kann ich den constraint nicht, weil die eindeutigkeit zu jedem zeitpunkt zu wichtig ist, ebenso die aktualität der daten. und es fälle gibt, wo die abfrage vor dem insert keine garantie der tatsächlichen eindeutigkeit ist zum zeitpunkt des inserts.&lt;br&gt;kann also inserts nicht verzögern, zusammenfassen, etc... oder zwischenzeitlich die redundanz ignorieren.&lt;br&gt;&lt;br&gt;** die einwände, dass ein fehlgeschlagener insert einen unüberschaubaren großen rollback verursacht, treffen in meinem fall nicht zu. insofern war die art und weise schon effizient. (habe laufende "einzel-inserts" - siehe obige begründung)&lt;br&gt;&lt;br&gt;** den philosophischen vermerk, dass man einen fehler auslöst um ihn hinterher zu vermeiden lass ich aber gelten. (auch wenn's in diesem fall effizient zu sein scheint)&lt;br&gt;&lt;br&gt;** im endeffekt ist es, wie colo schreibt, kosmetischer natur, aber der kunde möchte die meldungen aus seinem monitoring raus. bekommt er. verstehe das auch, die sind viel zu groß um beim monitoring flexibel sein zu können.&lt;br/&gt;</description>
      <pubDate>Fri, 26 Apr 2024 13:45:39 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180891.html#8180891</guid>
      <dc:creator>ashley77</dc:creator>
      <dc:date>2024-04-26T13:45:39Z</dc:date>
    </item>
    <item>
      <title>Re(5): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180681.html#8180681</link>
      <description>kommt ma halt so vor als würde PP versuchen hier bei etwas mitzudiskutieren, wovon er keine ahnung hat.. x)&lt;br/&gt;</description>
      <pubDate>Wed, 24 Apr 2024 07:28:02 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180681.html#8180681</guid>
      <dc:creator>XycRo</dc:creator>
      <dc:date>2024-04-24T07:28:02Z</dc:date>
    </item>
    <item>
      <title>Re(4): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180676.html#8180676</link>
      <description>&lt;blockquote&gt;&lt;em&gt; erst ein Select ausführen und wenn der Datensatz nicht vorhanden ist, dann ein&lt;br&gt;Insert.&lt;br&gt;&lt;/em&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;oder ein MERGE.&lt;br/&gt;</description>
      <pubDate>Tue, 23 Apr 2024 22:06:01 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180676.html#8180676</guid>
      <dc:creator>hhetl</dc:creator>
      <dc:date>2024-04-23T22:06:01Z</dc:date>
    </item>
    <item>
      <title>Re(2): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180671.html#8180671</link>
      <description>&lt;blockquote&gt;&lt;em&gt; Weiß was ich zu tun hab und wie ich es lösen werde.&lt;br&gt;&lt;/em&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;Die Applikation so umschreiben, dass gar keine Duplicates entstehen oder diese Daten gar nicht erst erzeugen, weils eh keinen Wert zu haben scheinen?&lt;br/&gt;</description>
      <pubDate>Tue, 23 Apr 2024 20:39:16 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180671.html#8180671</guid>
      <dc:creator>pong</dc:creator>
      <dc:date>2024-04-23T20:39:16Z</dc:date>
    </item>
    <item>
      <title>Re(3): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180670.html#8180670</link>
      <description>Welchen Wert haben diese Daten, wenn sowieso "weitergemacht" wird?&lt;br/&gt;</description>
      <pubDate>Tue, 23 Apr 2024 20:37:38 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180670.html#8180670</guid>
      <dc:creator>pong</dc:creator>
      <dc:date>2024-04-23T20:37:38Z</dc:date>
    </item>
    <item>
      <title>Re: best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180669.html#8180669</link>
      <description>Danke für eure Rückmeldungen!&lt;br&gt;&lt;br&gt;Einige der Argumentationen und Hinweise find ich sehr hilfreich.&lt;br&gt;Weiß was ich zu tun hab und wie ich es lösen werde.&lt;br&gt;&lt;img src="zwinker.gif" width="16" height="19" align="absmiddle" alt=";-)"/&gt;&lt;br/&gt;</description>
      <pubDate>Tue, 23 Apr 2024 19:25:29 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180669.html#8180669</guid>
      <dc:creator>ashley77</dc:creator>
      <dc:date>2024-04-23T19:25:29Z</dc:date>
    </item>
    <item>
      <title>Re: best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180640.html#8180640</link>
      <description>Das Problem ist hauptsaechlich kosmetischer Natur. Wenn man das dem Kunden nicht klarmachen kann, kann man sich entweder auf die Hilfe seines RDBMS verlassen (wenn es denn so ein Feature hat - Postgres hat es z. B. via &lt;a href="T"&gt;DO NOTHING in einer ON CONFLICT-Clause&lt;/a&gt;), oder aber baut sein eigenes Idempotenz-System. Das kann z. B. eine eigene Tabelle sein, wo man seinen eigenen Unique Value fuer alle N-Tupel seiner Daten (im einfachsten Fall den Hash einer String-Konkatenation der Daten, die man in der "primaeren" Tabelle einfuegen will) mitfuehrt, und diese Hilfstabelle auf Existenz eines so errechneten Wertes checkt, bevor man die "primaere" Tabelle mit dem INSERT belaestigt. Kann natuerlich - ja nach Isolation Level und Transaktionsaufkommen/-verhalten immer noch zur (versuchten) Verleztung des UNIQUE-Constrains in der "primaeren" Tabelle fuehren, aber sicherlich nicht mehr so oft, dass es in den Logs stoert, wenn jemand dort stierln geht.&lt;br/&gt;</description>
      <pubDate>Tue, 23 Apr 2024 12:33:11 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180640.html#8180640</guid>
      <dc:creator>colo</dc:creator>
      <dc:date>2024-04-23T12:33:11Z</dc:date>
    </item>
    <item>
      <title>Re(3): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180631.html#8180631</link>
      <description>Unique constraint ist auch üblich, aber in diesem Fall versuchst du die Daten mit "Tricks" zu prüfen.&lt;br&gt;Du kannst auch im Code erst ein Select ausführen und wenn der Datensatz nicht vorhanden ist, dann ein Insert.&lt;br/&gt;</description>
      <pubDate>Tue, 23 Apr 2024 10:54:09 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180631.html#8180631</guid>
      <dc:creator>pyti2000</dc:creator>
      <dc:date>2024-04-23T10:54:09Z</dc:date>
    </item>
    <item>
      <title>Re(4): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180627.html#8180627</link>
      <description>&lt;blockquote&gt;&lt;em&gt; "hatschat" - aber effizient.&lt;br&gt;&lt;/em&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;Glaube ich nicht - das Error handling erfolgt idR zeilenweise (performancemässig tödlich) und will jedesmal die laufende Transaktion zurückrollen, wenn man das nicht aufwändig abfängt.&lt;br&gt;&lt;br&gt;Die Idee, statt einer Lösung die Warnings zu unterdrücken, finde ich auch eher russisch...&lt;br/&gt;</description>
      <pubDate>Tue, 23 Apr 2024 10:09:54 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180627.html#8180627</guid>
      <dc:creator>hhetl</dc:creator>
      <dc:date>2024-04-23T10:09:54Z</dc:date>
    </item>
    <item>
      <title>Re(2): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180626.html#8180626</link>
      <description>&lt;blockquote&gt;&lt;em&gt; hau danach die Dubletten&lt;br&gt;&lt;/em&gt;&lt;/blockquote&gt;&lt;br&gt;Noch besser gar nicht erst inserten.&lt;br/&gt;</description>
      <pubDate>Tue, 23 Apr 2024 10:07:02 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180626.html#8180626</guid>
      <dc:creator>hhetl</dc:creator>
      <dc:date>2024-04-23T10:07:02Z</dc:date>
    </item>
    <item>
      <title>Re(3): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180732.html#8180732</link>
      <description>&lt;blockquote&gt;&lt;em&gt; meine frage: ist ein unique constraint unüblich&lt;br&gt;&lt;/em&gt;&lt;/blockquote&gt;&lt;br&gt;(Unique) Constraints sind nicht allgemein unüblich, nur in bestimmten Szenarien, zB im Data Warehousing.&lt;br&gt;&lt;br&gt;Unüblich weil hatschert ist es, einen Regelprozess in einen Fehler (constraint violation) laufen zu lassen und hintennach abzufangen. Ist auch ineffizient, weil die Fehlerbehandlung im Zweifelsfall zeilenweise (&lt;a href="https://www.red-gate.com/simple-talk/databases/sql-server/t-sql-programming-sql-server/rbar-row-by-agonizing-row/"&gt;RBAR&lt;/a&gt;) passiert und wahrscheinlich die ganze laufende Insert-Transaktion zurückgerollt werden muss.&lt;br/&gt;</description>
      <pubDate>Tue, 23 Apr 2024 10:04:54 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180732.html#8180732</guid>
      <dc:creator>hhetl</dc:creator>
      <dc:date>2024-04-23T10:04:54Z</dc:date>
    </item>
    <item>
      <title>Re(3): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180625.html#8180625</link>
      <description>&lt;blockquote&gt;&lt;em&gt; meine frage: ist ein unique constraint unüblich&lt;br&gt;&lt;/em&gt;&lt;/blockquote&gt;&lt;br&gt;(Unique) Constraints sind nicht allgemein unüblich, nur in bestimmten Szenarien, zB im Data Warehousing.&lt;br&gt;&lt;br&gt;Unüblich weil hatschert ist es, einen Regelprozess in einen Fehler (constraint violation) laufen zu lassen und hintennach abzufangen. Ist auch ineffizient, weil die Fehlerbehandlung im Zweifelsfall zeilenweise (RBAR) passiert und wahrscheinlich die ganze laufende Insert-Transaktion zurückgerollt werden muss.&lt;br/&gt;</description>
      <pubDate>Tue, 23 Apr 2024 10:04:54 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180625.html#8180625</guid>
      <dc:creator>hhetl</dc:creator>
      <dc:date>2024-04-23T10:04:54Z</dc:date>
    </item>
    <item>
      <title>Re(3): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180614.html#8180614</link>
      <description>Deine Lösung ist "hatschat" - aber effizient.&lt;br&gt;&lt;br&gt;Ich würde mit den DBA's reden, was sie an den Warnings stört. Vielleicht können sie diese wegfiltern, damit ihr Monitoring nicht "versaut" wird. &lt;br/&gt;</description>
      <pubDate>Tue, 23 Apr 2024 06:46:40 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180614.html#8180614</guid>
      <dc:creator>Paulas_Papa</dc:creator>
      <dc:date>2024-04-23T06:46:40Z</dc:date>
    </item>
    <item>
      <title>Re(2): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180608.html#8180608</link>
      <description>thx - ist natürlich ein weg. hab noch ne menge andere ideen das zu lösen.&lt;br&gt;&lt;br&gt;der DB load, den ich dadurch erzeuge ist ungleich höher.&lt;br&gt;warum würdest du trotzdem diesen weg den contraints vorziehen?&lt;br/&gt;</description>
      <pubDate>Tue, 23 Apr 2024 05:53:08 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180608.html#8180608</guid>
      <dc:creator>ashley77</dc:creator>
      <dc:date>2024-04-23T05:53:08Z</dc:date>
    </item>
    <item>
      <title>Re(2): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180607.html#8180607</link>
      <description>thx - hab von euch 2 lösungen vorgeschlagen bekommen.&lt;br&gt;mir fallen noch 5 andere wege ein das zu lösen.&lt;br&gt;&lt;br&gt;meine frage: ist ein unique constraint unüblich bzw. warum würde man das so nicht (mehr) lösen?&lt;br/&gt;</description>
      <pubDate>Tue, 23 Apr 2024 05:51:32 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180607.html#8180607</guid>
      <dc:creator>ashley77</dc:creator>
      <dc:date>2024-04-23T05:51:32Z</dc:date>
    </item>
    <item>
      <title>Re: best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180595.html#8180595</link>
      <description>Schalt den Constraint aus, mach’s Insert und hau danach die Dubletten raus.&lt;br&gt;&lt;br&gt;&lt;a href="https://madafa.de/blog/duplikate-aus-sql-tabellen-entfernen" rel="noopener" target="_blank"&gt;https:/&lt;wbr/&gt;/&lt;wbr/&gt;madafa.de/&lt;wbr/&gt;blog/&lt;wbr/&gt;duplikate-aus-sql-tabellen-entfernen&lt;/a&gt; &lt;br/&gt;</description>
      <pubDate>Mon, 22 Apr 2024 18:06:02 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180595.html#8180595</guid>
      <dc:creator>Paulas_Papa</dc:creator>
      <dc:date>2024-04-22T18:06:02Z</dc:date>
    </item>
    <item>
      <title>Re: best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180599.html#8180599</link>
      <description>Ich würde das evtl. datenbankseitig lösen. Du schreibst einfach alle Daten in eine Hilfstabelle, dann hast du alle Möglichkeiten mit select into, distinct, if not exists etc. die richtige Tabelle zu befüllen.&lt;br/&gt;</description>
      <pubDate>Mon, 22 Apr 2024 16:07:17 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180599.html#8180599</guid>
      <dc:creator>pyti2000</dc:creator>
      <dc:date>2024-04-22T16:07:17Z</dc:date>
    </item>
    <item>
      <title>Re: best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180591.html#8180591</link>
      <description>Ich würde das evtl. datenbankseitig lösen. Du schreibst einfach alle Daten in eine Hilfstabelle, dann hast du alle Möglichkeiten mit insert into, distinct, if not exists, where etc. die richtige Tabelle zu befüllen.&lt;br/&gt;</description>
      <pubDate>Mon, 22 Apr 2024 16:07:17 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180591.html#8180591</guid>
      <dc:creator>pyti2000</dc:creator>
      <dc:date>2024-04-22T16:07:17Z</dc:date>
    </item>
    <item>
      <title>Re(2): best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180585.html#8180585</link>
      <description>nein, der user bekommt davon gar nichts mit.&lt;br&gt;die "fehlermeldungen" (die ja keine sind) sieht der DB admin in seiner konsole.&lt;br&gt;&lt;br&gt;es werden immer wieder (ähnliche) daten importiert in die DB, aber mit hilfe des unique constraints eben doppelte einträger verhindert. und somit nur neue daten importiert.&lt;br&gt;&lt;br&gt;die vom INSERT getriggerte exception wird in der app im code abgefangen und dann ganz normal weiter gemacht.&lt;br/&gt;</description>
      <pubDate>Mon, 22 Apr 2024 15:02:51 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180585.html#8180585</guid>
      <dc:creator>ashley77</dc:creator>
      <dc:date>2024-04-22T15:02:51Z</dc:date>
    </item>
    <item>
      <title>Re: best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180584.html#8180584</link>
      <description>Wie stelle ich mir den Use Case vor? X Leute nutzen deine App parallel und erfassen Daten. &lt;br&gt;Und plötzlich kriegt einer von der App den Error, dass beim Insert der Key nicht UNIQUE war?&lt;br&gt;&lt;br&gt;Wie oft hast du bei Amazon, Whatsapp, XYZ so eine Warnung erhalten?&lt;br&gt;&lt;br&gt;Als "normaler" Kunde würde ich das als Bug "empfinden". Im Auf/Vertrag wird natürlich nichts dazu erwähnt sein - daher schmecks.&lt;br&gt;&lt;br&gt;&lt;br/&gt;</description>
      <pubDate>Mon, 22 Apr 2024 14:51:38 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180584.html#8180584</guid>
      <dc:creator>Paulas_Papa</dc:creator>
      <dc:date>2024-04-22T14:51:38Z</dc:date>
    </item>
    <item>
      <title>best practise - redundanz bei SQL inserts vermeiden</title>
      <link>http://forum.geizhals.at/t906846,8180582.html#8180582</link>
      <description>kurze frage an SQL spezialisten:&lt;br&gt;=&gt; habe eine App programmiert und SQL DB, in die laufend daten eingetragen werden&lt;br&gt;=&gt; um redundante daten zu vermeiden, wurde ein unique constraint erstellt. die app fängt beim INSERT die exception ab.&lt;br&gt;&lt;br&gt;kunde beschwert sich, dass er zu viele unique key constraints meldungen bekommt und will sie eliminiert haben... bugfix oder feature request?&lt;br&gt;&lt;br&gt;wie ist hier die best practise?&lt;br&gt;(hab es vor - zugegeben - sehr langer zeit mit unique constraints gelernt. &lt;br&gt;aber evtl. diese vorgehensweise nicht mehr üblich?)&lt;br/&gt;</description>
      <pubDate>Mon, 22 Apr 2024 14:40:59 GMT</pubDate>
      <guid>http://forum.geizhals.at/t906846,8180582.html#8180582</guid>
      <dc:creator>ashley77</dc:creator>
      <dc:date>2024-04-22T14:40:59Z</dc:date>
    </item>
  </channel>
</rss>
