it-swarm.com.de

Wie teste ich eine UPDATE-Anweisung in PostgreSQL?

Wie kann ich eine UPDATE-Anweisung testen, um beispielsweise festzustellen, ob sie funktionieren würde, beispielsweise, ob tatsächlich Zeilen usw. aktualisiert würden?

Gibt es eine Möglichkeit, es einfach zu simulieren?

37
user1154863

Verwenden Sie eine transaction , um Ihre Aktualisierungsanweisung und eine Auswahlabfrage einzugeben (um die Aktualisierung zu testen), und führen Sie dann immer einen Rollback durch. 

Beispiel:

BEGIN;

UPDATE accounts SET balance = balance - 100.00
    WHERE name = 'Alice';

SELECT accounts WHERE name = 'Alice';

ROLLBACK; -- << Important! Un-does your UPDATE statement above!

Eine Transaktion endet in der Regel mit einem Commit. Da Sie jedoch nur testen und nicht möchten, dass die Änderungen dauerhaft sind, führen Sie einfach einen Rollback durch.

59
Paul Sasik

Wickeln Sie es in eine Transaktion , testen Sie die Ergebnisse mit einem SELECT und einem Rollback am Ende.

BEGIN;

UPDATE ...;

SELECT ...;

ROLLBACK;
32
Joe Stefanelli

Sie können immer eine Beispieldatenbank unter SQL Fiddle erstellen und dort Ihre Update-Anweisungen ausprobieren.

Vollständige Offenlegung: Ich bin der Autor von sqlfiddle.com

3
Jake Feasel

Sie können ein Tool verwenden, mit dem Sie einen Schnappschuss der Datenbank erstellen und problemlos zurücksetzen können. Ich empfehle OffScale - es ist im Grunde für Datenbanken git.

2
Taichman

Führen Sie die gleiche Prüfung zuerst mit einer SELECT-Anweisung durch: Die von SELECT zurückgegebenen Zeilen sind die von UPDATE geänderten Zeilen

0
ibiwan

Angesichts dieses einfachen Updates:

UPDATE Products
   SET price_including_vat = price * 1.05
 WHERE product_type = 'Food';

Ich würde es mit so etwas testen:

 SELECT price_including_vat AS price_including_vat__before, 
        price * 1.05 AS price_including_vat__after, 
        *
   FROM Products
 WHERE product_type = 'Food';

Eigentlich würde ich das Gehirn proaktiv einsetzen und mehr wie folgt analysieren:

WITH updated AS 
   (
    SELECT price_including_vat AS price_including_vat__before, 
           price * 1.05 AS price_including_vat__after, 
           *
      FROM Products
    WHERE product_type = 'Food'
   )
SELECT * 
  FROM updated
 WHERE price_including_vat__before = price_including_vat__after;
0
onedaywhen

Mit Postgres können Sie die UPDATE-KlauselVERWENDEN, DIEzurückgibt, um anzuzeigen, welche Zeilen geändert wurden.

https://www.db-fiddle.com/f/e8qsdmqT87DoLpMjyLD

BEGIN;

UPDATE
    data
SET
    text = 'modified'
WHERE
    id > 2
RETURNING
    id, text;

ROLLBACK;
0
adrianlzt