2016-04-20 9 views
1

Ich habe den folgenden Java-Code:die SQL-Spalten auf UPDATE-Anweisung geändert

PreparedStatement statement = conn.prepareStatement(updateString); 
statement.execute(); 

Ich weiß, dass danach ausgeführt wird, tut statement.getUpdateCount(); die Anzahl der aktualisierten Zeilen zurückgibt. Aber gibt es eine Möglichkeit zu wissen, welche Spalten aktualisiert wurden?

Das Problem ist, dass der Code, wie er ist, immer den gesamten Satz von Spaltenwerten übergibt, selbst wenn sich einige dieser Werte nicht ändern.

Ich möchte in der Lage sein zu sagen, ob eine bestimmte Spalte, zum Beispiel "NAME", geändert hat oder nicht, als Ergebnis der zugrunde liegenden vorbereiteten UPDATE-Anweisung.

EDIT: Ich verstehe, dass es möglich ist, eine SELECT für diese Spalte zu tun, den aktuellen Wert zu erhalten, und vergleichen Sie mit eingehenden neuen Wert zu erkennen, ob es wird sich ändern. Es impliziert jedoch eine weitere Reise in die Datenbank. Diese Frage soll feststellen, ob es möglich ist oder nicht, durch irgendeinen JDBC/SQL-Kommunikationsmechanismus unmittelbar nach dem Aufrufen dieser Anweisung.

+0

versuchen, eine Abfrage ex sxcute: Wählen Sie nameColimn aus der Tabelle nach dem updatequery – Abdelhak

+1

ich nicht den vorherigen Wert zu vergleichen haben. Ich versuche zu sehen, ob es eine schnelle Lösung gibt, die nur SQL verwendet, bevor ich Ripple-Effekte über existierende Java-Schnittstellen erzeuge und so weiter. –

+0

Wenn Sie nicht haben, ist es das gleiche nach dem Update überprüfen Sie das Ergebnis mit Select Query – Abdelhak

Antwort

0

Wenn Sie nur jede Spalte aktualisieren, unabhängig davon, ob der neue Wert vom alten Wert abweicht, müssen Sie wahrscheinlich vor der Aktualisierung jeden Spaltenwert programmgesteuert auswählen und prüfen.

so dass der Pseudocode wäre so etwas wie:

select * from table where condition 
execute 
foreach row in result 
    foreach column in row 
    if (column != newColumn) document.write(column != newColumn); 

PreparedStatement statement = conn.prepareStatement(updateString); 
statement.execute(); 
+1

Meine Absicht ist herauszufinden, ob es möglich ist, herauszufinden, welche Spalten sich durch einen SQL-Mechanismus geändert haben. Ich weiß, dass ich vorher eine Abfrage durchführen kann, aktuellen Wert erhalten, mit neuem Wert vergleichen usw. Das Problem ist, dass ein anderer Zugriff auf die Datenbank impliziert, und ich versuche zu überprüfen, ob es eine vorhandene Programmierschnittstelle über JDBC gibt ob sich eine gegebene Spalte wirklich geändert hat oder nicht. –

Verwandte Themen