AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Dreieckstausch? (Daten 2er Datensätze vertauschen)
Thema durchsuchen
Ansicht
Themen-Optionen

Dreieckstausch? (Daten 2er Datensätze vertauschen)

Ein Thema von yankee · begonnen am 18. Jan 2007 · letzter Beitrag vom 29. Jul 2009
 
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#9

Re: Dreieckstausch? (Daten 2er Datensätze vertauschen)

  Alt 28. Jul 2009, 14:31
Zitat von DeddyH:
[..]zumal ich auch nicht weiß, um welches DBMS es hier geht.[..]
Zitat von MatthiasR:
[..]Bei mir kommt PostgreSQL zum Einsatz[..]
Zitat von DeddyH:
http://stackoverflow.com/questions/484040/swapping-the-2-rows-in-ms-sql-server-retaining-the-original-primary-key-and-witho#484787
Dieses Beispiel ist ähnlich wie das IF-Konstrukt in meinem Beitrag oben: Es funtkioniert nur, wenn der Wert, der geändert werden soll kein Unique key hat. Oder habe ich da was übersehen?

Eine Stored Procedure für den Fall würde zwar die Komplexität woanders hin verlegen und die Abfrage auch beschleunigen, wenn das DBMS über ein Netzwerk angesprochen wird, da weniger Daten verschoben werden müssen. Aber das eigentliche Problem löst es wohl nicht, da auch hier immer nur Zugriff auf eine Zeile auf mal besteht und somit der unique key auf jeden Fall blockiert. Der Unique key lässt sich auch nicht temporär deaktivieren (zumindest in mysql) (bzw. nur mit ALTER TABLE DROP KEY ... Was entsprechend dauern kann und sowieso eher ähm... zu Problemen anderswo führen kann.

EDIT: Natürlich kann die Version mit dem temporären Wert auch Probleme verusachen. Was ist wenn zwei Threads gleichzeitig den gleichen temporären Wert nutzen wollen um zwei Zeilen zu tauschen. Dank Transaktionen würde das Ergebnis zwar nicht willkürlich sein, aber was macht das DBMS in einer solchen Situation? Lockt der zweite Thread solange, bsi der erste fertig ist, oder wird direkt zurückgerollt? Das könnte DBMS spezifisch sein...
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz